сравнить два файла и получить выходные данные для тех же строк - PullRequest
10 голосов
/ 14 мая 2010

Как получить следующий вывод с помощью команды linux, сравнив два текстовых файла? Спасибо.

file1:

site110
site120

file2 (Обновлено):

domain1.com - site110
domain2.com - site111
domain3.com - site112
domain4.com - site113
domain5.com - site120
domain6.com - site1201
domain7.com - site1202

выход:

domain1.com - site110
domain5.com - site120

Если я использую:

grep -f file1 file2

вывод будет:

domain1.com - site110
domain5.com - site120
domain6.com - site1201
domain7.com - site1202

которые последние две строки не то, что я хочу. Благодаря.

Ответы [ 5 ]

14 голосов
/ 14 мая 2010

Из руководства пользователя grep :

   -f FILE, --file=FILE
          Obtain  patterns  from  FILE,  one  per  line.   The  empty file
          contains zero patterns, and therefore matches nothing.   (-f  is
          specified by POSIX.)

Таким образом:

grep -f file1 file2

domain1.com - site110
domain5.com - site120
4 голосов
/ 11 апреля 2012

Используйте команду comm.

comm -12 < (sort file1) < (sort file2)

Эта команда более точна, чем grep -f.

1 голос
/ 11 апреля 2012

Я думаю, что вы ищете какую-то функцию соединения с базой данных. В Unix есть команда для этого: join . В вашем случае:

join -1 1 -2 3 -t " " -o 2.1,2.2,2.3 file1 file2
0 голосов
/ 16 мая 2010

Может быть man paste? Может потребоваться некоторая обработка вывода.

0 голосов
/ 14 мая 2010

Как насчет diff ?

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