比较两个文件并获取相同行的输出

时间:2010-05-14 17:35:16

标签: linux bash

如何通过比较两个文本文件使用linux命令获得以下输出?感谢。

文件1:

site110
site120

文件2(更新):

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 个答案:

答案 0 :(得分:14)

来自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

答案 1 :(得分:4)

使用comm命令。

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

此命令比grep -f更准确。

答案 2 :(得分:1)

我认为您正在寻找一种数据库连接功能。 Unix有一个命令:join。在你的情况下:

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

答案 3 :(得分:0)

diff怎么样?

答案 4 :(得分:0)

可能是man paste?可能需要一些输出处理。