Сравнение двух текстовых файлов друг с другом - PullRequest
1 голос
/ 14 мая 2011

Если бы мне пришлось текстовые файлы, например:

file1.txt

apple
orange
pear
banana

file2.txt

banana
pear

Как бы я взял все фразы настроки file2.txt вне файла file1.txt

Таким образом, file1.txt останется с:

apple
orange

Ответы [ 3 ]

1 голос
/ 14 мая 2011

Если файлы огромны (но также должны быть отсортированы), comm может быть предпочтительнее более общего решения grep, предложенного Иваном, поскольку оно работает построчно и, следовательно, не должно загружать весь файл2.txt в память (или поиск по каждой строке).

comm -3 file1-sorted.txt file2-sorted.txt | sed 's/^\t//'

Команда sed необходима для удаления ведущей вкладки, вставленной с помощью comm.

1 голос
/ 14 мая 2011
grep -v -F -f file2.txt file1.txt

-v означает перечисление только тех строк файла file1.txt, которые не соответствуют шаблону, а -f означает получение шаблонов из файла, в данном случае - file2.txt. И -F - интерпретировать PATTERN как список фиксированных строк, разделенных символами новой строки, любой из которых должен соответствовать.

Команда grep встроена в OS X и Linux. В Windows вам придется установить его; например, через Cygwin .

0 голосов
/ 14 мая 2011
combine file1 not file2

В Debian и его производных объединение можно найти в пакете moreutils.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...