Schnelle Möglichkeit, Zeilen in einer Datei zu finden, die sich nicht in einer anderen befinden?

Ich habe zwei große Dateien (Sätze von Dateinamen). Ungefähr 30.000 Zeilen in jeder Datei. Ich versuche, einen schnellen Weg zu finden, um Zeilen in Datei1 zu finden, die in Datei2 nicht vorhanden sind.

Wenn dies beispielsweise file1 ist:

line1
line2
line3

Und das ist file2:

line1
line4
line5

Dann sollte mein Ergebnis / Output sein:

line2
line3

Das funktioniert:

grep -v -f file2 file1

Aber es ist sehr, sehr langsam, wenn es für meine großen Dateien verwendet wird.

Ich vermute, dass es einen guten Weg gibt, dies mit diff () zu tun, aber die Ausgabe sollte so seingerade die Zeilen, sonst nichts, und ich kann keinen Schalter dafür finden.

Kann mir jemand helfen, einen schnellen Weg zu finden, dies mit bash und grundlegenden Linux-Binärdateien zu tun?

EDIT: Um meine eigene Frage zu beantworten, ist dies der beste Weg, den ich bisher mit diff () gefunden habe:

diff file2 file1 | grep '^>' | sed 's/^>\ //'

Es muss doch einen besseren Weg geben?

Antworten auf die Frage(10)

Ihre Antwort auf die Frage