Сравнить два файла и получить вывод для тех же строк
Как получить следующий результат с помощью команды 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
? Может потребоваться некоторая обработка вывода.