Быстрый способ поиска строк в одном файле, которых нет в другом?
У меня есть два больших файла (наборы имен файлов). Примерно 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/^>\ //'
Конечно, должен быть лучший способ?