сравнение файлов - PullRequest
       24

сравнение файлов

1 голос
/ 10 июля 2009

Привет, ребята, у меня есть два файла с разделителями трубы, первый файл содержит 1000 записей, а второй файл содержит 10 записей и записи, которые присутствуют во втором файле существует первый файл. Теперь нужен файл, который даст мне 990 записей, исключив 10 записей, которые встречаются в обоих файлах,

Я знаю, как это сделать с помощью SQL. Но как мы можем добиться этого в UNIX?

Любая помощь с благодарностью

Ответы [ 5 ]

8 голосов
/ 10 июля 2009

Предположим, файлы all и some. Тогда сделай

 fgrep -v -f some all
1 голос
/ 10 июля 2009

см. Команду join

0 голосов
/ 10 июля 2009
awk 'FNR==NR{ a[$0++;next}(!($0 in a))' some all
0 голосов
/ 10 июля 2009

Утилита comm может использоваться для фильтрации строк из одного файла из другого

0 голосов
/ 10 июля 2009

Сначала замените каналы на новые строки, чтобы мы могли обрабатывать файлы с помощью инструментов Unix, ориентированных на строки. Затем используйте comm, чтобы отфильтровать строки, которые появляются в обоих файлах. Наконец, преобразуйте символы новой строки обратно в каналы.

tr '|' '\n' < file1 | sort > file1.sorted
tr '|' '\n' < file2 | sort > file2.sorted
comm -3 file1.sorted file2.sorted | tr '\n' '|'

Или все в одной строке с использованием подстановки процесса <(command) синтаксис:

comm -3 <(tr '|' '\n' < file1 | sort) <(tr '|' '\n' < file2 | sort) | tr '\n' '|'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...