Сравните строки двух файлов, выведите строки, уникальные для первого файла
У меня есть два текстовых файла, которые содержат уникальный отсортированный список слов:
Файл 1:
a
b
c
d
Файл 2:
b
c
Мне нужен новый файл, который содержит только посторонние строки в файле 1, поэтому результат будет
a
d
Ответы
Ответ 1
Это то, что comm
для:
comm - выберите или отклоните линии, общие для двух файлов
Вы хотите
comm -23 "File 1" "File 2"
который будет подавлять вывод строк только в файле 2 и строки в обоих файлах, оставляя только строки в файле 1.
Дополнительные ответы здесь, на вики Грега Wooledge
Ответ 2
Вы можете использовать grep
:
grep -f file1.txt -vFx file2.txt
Обратите внимание на использование флагов F, --fixed-strings
и x, --line-regexp
, чтобы заставить сравнение выполнить всю строку.
Ответ 3
Попробуйте это
$ join file1.txt file2.txt -v 1
$ man join
-a FILENUM
print unpairable lines coming from file FILENUM, where FILENUM is 1 or 2, corresponding to FILE1 or FILE2
-v FILENUM
like -a FILENUM, but suppress joined output lines