Szybki sposób znajdowania linii w jednym pliku, których nie ma w innym?

Mam dwa duże pliki (zestawy nazw plików). Około 30 000 linii w każdym pliku. Próbuję znaleźć szybki sposób znajdowania linii w pliku1, które nie są obecne w pliku2.

Na przykład, jeśli jest to plik1:

line1
line2
line3

A to jest plik2:

line1
line4
line5

Wtedy mój wynik / wynik powinien być:

line2
line3

To działa:

grep -v -f file2 file1

Ale jest bardzo, bardzo powolny, gdy używa się go na moich dużych plikach.

Podejrzewam, że jest dobry sposób na zrobienie tego za pomocą diff (), ale wyjście powinno byćwłaśnie linie, nic więcej, i nie mogę znaleźć przełącznika do tego.

Czy ktoś może mi pomóc znaleźć szybki sposób na zrobienie tego, używając basha i podstawowych linuxowych plików binarnych?

EDYCJA: Aby śledzić moje własne pytanie, jest to najlepszy sposób, jaki znalazłem do tej pory przy użyciu diff ():

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

Z pewnością musi być lepszy sposób?

questionAnswers(10)

yourAnswerToTheQuestion