比较两个文件的相同

恐怕地球人都知道比较两个文件的不同得用diff(1),现在有个问题是:如何找出两个文件的相同之处?

经过简单查找,我发现可以用comm(1)。可是看了一下它的man我们就发现,不妥,它没diff(1)那么简单。首先它的选项有些特别;其次,很重要的是,它要求文件必须是排好序的!这时候恐怕我们就得想,哎,又得用bash脚本了。不行,那不符合hack精神,我就不信在一行里整不出它来!于是下面的一行就出来乐:

% comm -1 -2 <(cat 1.txt | sort) <(cat 2.txt |sort)

或者更干脆:

% comm -1 -2 <(sort 1.txt) <(sort 2.txt)

zsh和bash都可以用的。可见,shell语法是够博大精深的……

课后作业:不看源代码,猜猜上面的技巧大体上是怎么实现的?(想知道“答案”的拖住最后一行。;-)

提示:把comm换成diff看看,是不是用的/proc/self?