Löschen Sie Zeilen, die einer Zeichenfolge vor dem Komma entsprechen

Löschen Sie Zeilen, die einer Zeichenfolge vor dem Komma entsprechen

Ich bin ziemlich neu im Bash-Scripting und wäre daher für jede Hilfe sehr dankbar. Unten steht, was ich erreichen möchte.

Ich habe zwei Textdateien. Ich möchte alle Zeilen der ersten Datei löschen, die mit einer meiner Zeichenfolgen in der zweiten Datei vor dem Komma übereinstimmen.

z.B

Datei 1:

this_is_a_test.txt,11dsdsdsdsd
this_is_a_test24.txt,545467ddd
this_is_a_test22,121244442

Datei 2:

this_is_a_test.txt
this_is_a_test24.txt
this_is_a_test22

Gewünschte Ausgabe: Leer

Antwort1

Sie können verwenden:

grep -vFf file2 file1

Beachten Sie, dass weiterhin Zeilen gelöscht werden, auch wenn nach dem Komma eine Übereinstimmung vorliegt.

Antwort2

Mit einem einfachen sedTrick gelingt dies.

IFS='
' # If whitespaces exist in file 2
cat file2.txt | while read i; do
  sed -i '/^'"$i"',/d' file1.txt
done

verwandte Informationen