Сравнить два файла и получить вывод для тех же строк

Как получить следующий результат с помощью команды 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

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

Ответ 1

Из grep manpage:

   -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

Ответ 2

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

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

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

Ответ 3

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

join -1 1 -2 3 -t " " -o 2.1,2.2,2.3 file1 file2

Ответ 4

Как насчет diff?

Ответ 5

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