Maneira rápida de encontrar linhas em um arquivo que não estão em outro?

Eu tenho dois arquivos grandes (conjuntos de nomes de arquivos). Aproximadamente 30.000 linhas em cada arquivo. Eu estou tentando encontrar uma maneira rápida de encontrar linhas no arquivo1 que não estão presentes no arquivo2.

Por exemplo, se este for o arquivo1:

line1
line2
line3

E isso é file2:

line1
line4
line5

Então meu resultado / saída deve ser:

line2
line3

Isso funciona:

grep -v -f file2 file1

Mas é muito, muito lento quando usado em meus arquivos grandes.

Eu suspeito que há uma boa maneira de fazer isso usando diff (), mas a saída deve sersomente as linhas, nada mais, e não consigo encontrar uma mudança para isso.

Alguém pode me ajudar a encontrar uma maneira rápida de fazer isso, usando bash e binários básicos do Linux?

EDIT: Para acompanhar a minha própria pergunta, esta é a melhor maneira que encontrei até agora usando diff ():

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

Certamente deve haver uma maneira melhor?

questionAnswers(10)

yourAnswerToTheQuestion