Как удалить общие строки между двумя файлами без сортировки? [Дубликат]

На этот вопрос уже есть ответ здесь:

Сравните 2 файла и удалите все строки в file2, когда они соответствуют значениям, найденным в file1 4 ответа

У меня есть два файла без сортировки, которые имеют несколько общих строк.

file1.txt

Z
B
A
H
L

file2.txt

S
L
W
Q
A

Я использую для удаления общих строк следующее:

sort -u file1.txt > file1_sorted.txt
sort -u file2.txt > file2_sorted.txt

comm -23 file1_sorted.txt file2_sorted.txt > file_final.txt

Выход:

B
H
Z

Проблема в том, что я хочу сохранить порядок file1.txt, я имею в виду:

Желаемый вывод:

Z
B
H

Одним из решений, которое я решил, является создание цикла для чтения всех строк file2.txt и:

sed -i '/^${line_file2}$/d' file1.txt

Но если файлы большие, то производительность может быть отстойной.

Тебе нравится моя идея?У вас есть альтернатива?

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

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