Быстрый способ поиска строк в одном файле, которых нет в другом?

У меня есть два больших файла (наборы имен файлов). Примерно 30.000 строк в каждом файле. Я пытаюсь найти быстрый способ найти строки в file1, которых нет в file2.

Например, если это файл1:

line1
line2
line3

И это файл2:

line1
line4
line5

Тогда мой результат / вывод должен быть:

line2
line3

Это работает:

grep -v -f file2 file1

Но это очень, очень медленно, когда используется на моих больших файлах.

Я подозреваю, что есть хороший способ сделать это с помощью diff (), но вывод должен бытьпросто линии, ничего больше, и я не могу найти переключатель для этого.

Может ли кто-нибудь помочь мне найти быстрый способ сделать это, используя bash и базовые бинарные файлы Linux?

РЕДАКТИРОВАТЬ: Чтобы ответить на мой собственный вопрос, это лучший способ, который я нашел до сих пор с использованием diff ():

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

Конечно, должен быть лучший способ?

Ответы на вопрос(10)

Ваш ответ на вопрос