Mit grep Zeilen entfernen, die in zwei Dateien doppelt vorkommen
Problem: Es sollen zwei Dateien verglichen werden und dabei alle Zeilen der ersten Datei, die ebenfalls in der zweiten Datei vorkommen, entfernt werden.
Der Unix / Linux Befehl grep wird meistens dafür verwendet nach einem bestimmten Ausdruck zu filtern. Man kann ihn jedoch auch mit Ausdrücken füttern, die nicht vorkommen sollen.
Bei unserem Problem benötigen wir diese Funktion, denn wir wollen alle Zeilen aus Datei A, die nicht ebenfalls in Datei B vorkommen ausgeben lassen.
Lösung: Mit grep -vxf Datei_B.txt Datei_A.txt die gesuchten Zeilen finden
Um Zeilen rauszuschmeißen, die in Datei_A.txt und ebenfalls in Datei_B.txt vorkommen, verwenden wir folgenden Befehl:
grep -vxf Datei_B.txt Datei_A.txt
Die Kommandooption -v steht hierbei für das umkehren der Treffer, d.h. nur Zeilen aus Datei_A.txt, die nicht in Datei_B.txt vorkommen gelten als Treffer.
Die Kommandooption -x gibt an, dass jeweils die ganze Zeilen verglichen werden.
Mit der Kommandooption -f lesen wir die Ausdrücke aus der Datei Datei_B.txt ein.
Somit wurde das Problem mit einem einzigen kurzen grep-Befehl gelöst.