2016-11-07 5 views
2

Ich habe zwei Dateien: A und B.entfernt alle Vorkommen von Datei A aus der Datei B

Inhalt von A:

http://example.com/1 
http://example.com/2 
http://example.com/3 
http://example.com/4 
http://example.com/5 
http://example.com/6 
http://example.com/7 
http://example.com/8 
http://example.com/9 
http://example.com/4 

Inhalt von Datei B:

http://example.com/1 
http://example.com/3 
http://example.com/9 
http://example.com/4 

Jetzt, Ich möchte alle Vorkommen der Zeilen in Datei B aus Datei A entfernen.

Ich habe versucht, folgendes:

for LINK in $(sort -u B);do sed -i -e 's/"$LINK"//g' A; echo "Removed $LINK";done 

Aber es hat überhaupt nichts getan.

+0

Wie kritisch ist die Verwendung von 'sed'? Darf man 'sed' benutzen, um sein' sed' Skript zu schreiben? Könnte "Awk" verwendet werden? Und die Grep-Lösung, die Sie erhalten haben, ist einfacher als die Verwendung von »sed« oder »awk«. –

+0

@ JonathanLeffler Nein, es muss definitiv nicht sed sein. – rhillhouse

Antwort

4

grep -vf wird einfacher für sein:

grep -vxFf file2 file1 

http://example.com/2 
http://example.com/5 
http://example.com/6 
http://example.com/7 
http://example.com/8 
+2

Benötigen Sie eine '-x' Option oder etwas, um sicherzustellen, dass' http: // example.com/1' aus Datei B nicht 'http: // example.com/100' usw. löscht? –

+0

Definitiv @ JonathanLeffler, '-x' wird hier sicherlich benötigt. Danke – anubhava

+0

lol Sie wissen, das ist ein Duplikat ... – 123

Verwandte Themen