BASH:比较多个文件时的comm(或类似)

时间:2013-03-31 00:09:56

标签: diff comm

我遇到以下问题:我想比较包含此类列表的8个文件的内容

Sample1.txt    Sample2.txt     Sample3.txt
apple          pineapple       apple
pineapple      apple           pineapple
bananas        bananas         bananas
orange         orange          mango
grape          nuts            nuts

使用comm Sample1.txt Sample 2.txt我可以有类似的东西

grape    nuts    apple
                 pineapple
                 bananas
                 orange

意味着在第一列中我只有第一个样本,第二列只与第二个样本有关,第三个列与事物有共同之处。

我想做同样的事情,但有8个文件(样本)。有了差异,这是不可能的,但最后我想有

Sample1  Sample2   Sample3    ...Sample8     Things in common
grape    nuts      mango                     apple
                                             pineapple
                                             bananas

有没有机会用bash做到这一点?是否有像diff这样的命令允许搜索两个以上文件的差异?

谢谢大家......我知道这是一个具有挑战性的问题

Fabio

1 个答案:

答案 0 :(得分:0)

这是我天真的解决方案:

first=sample1.txt; for a in *.txt; do comm -12 $first $a >temp_$a; echo "comparing" $first " " $a "and writing to temp_$a"; first=temp_$a; cat temp_$a; done;