用于查找文件之间相似性的Shell脚本

时间:2011-11-09 16:24:35

标签: bash shell

我有两个制表符分隔文件,包含一个ID列,然后是20个左右的变量。我想找到这两个文件中存在的ID。我要求的是与bash脚本'diff'相反的东西。任何建议都表示赞赏。

3 个答案:

答案 0 :(得分:2)

工具comm可能是你想要的 - 给定来自两个文件的排序输入,它可以告诉你哪些行只在文件A中,哪些行在两个文件中,哪些只在文件B中。例如,如果你有file-a,那就是:

17 p o i u
13 a b c d
14 q w e r t 

...和file-b是:

18 a s d f 
13 f g h i
7 z x c v 

您可以通过以下方式使用comm进行流程替换:

$ comm -1 -2 <(cut -d ' ' -f 1 file-a|sort) <(cut -d ' ' -f 1 file-b|sort)
13

-1参数会抑制仅在第一个文件中的行,而-2会抑制仅在第二个文件中的行。

答案 1 :(得分:1)

对文件进行排序,然后您可以使用

$ join sortedfile1.txt sortedfile2.txt

您将获得加入的公共ID行。

答案 2 :(得分:0)

cut -f1 file1 file2 | sort | uniq -d