Как удалить общие строки между двумя файлами без сортировки? [Дубликат]
На этот вопрос уже есть ответ здесь:
Сравните 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
Но если файлы большие, то производительность может быть отстойной.
Тебе нравится моя идея?У вас есть альтернатива?