Ich habe zwei große Dateien (Sets von Dateinamen). Etwa 30.000 Zeilen in jeder Datei. Ich versuche einen schnellen Weg zu finden, um Zeilen in Datei1 zu finden, die nicht in Datei2 vorhanden sind.
Zum Beispiel, wenn dies Datei1 ist:
Zeile1
Zeile2
Zeile3
Und das ist Datei2:
Zeile1
Zeile4
Zeile5
Dann sollte mein Ergebnis/Ausgabe sein:
Zeile2
Zeile3
Dies funktioniert:
grep -v -f file2 file1
Aber es ist sehr, sehr langsam, wenn es auf meine großen Dateien angewendet wird.
Ich vermute, es gibt eine gute Möglichkeit, dies mit diff()
zu tun, aber die Ausgabe sollte nur die Zeilen sein, nichts anderes, und ich kann keinen Schalter dafür finden.
Kann mir jemand helfen, einen schnellen Weg zu finden, dies zu tun, unter Verwendung von Bash und grundlegenden Linux-Binärdateien?
BEARBEITEN: Um auf meine eigene Frage einzugehen, dies ist der beste Weg, den ich bisher gefunden habe, um diff()
zu verwenden:
diff file2 file1 | grep '^>' | sed 's/^>\ //'
Sicherlich muss es einen besseren Weg geben?