从unix终端,我们可以使用diff file1 file2
来查找两个文件之间的差异。是否有类似的命令来显示2个文件的相似性? (必要时可以使用许多管道。
每个文件都包含一个带有字符串句子的行;对它们进行排序,并使用sort file1 | uniq
删除重复的行。
file1
:http://pastebin.com/taRcegVn
file2
:http://pastebin.com/2fXeMrHQ
输出应该输出两个文件中出现的行。
output
:http://pastebin.com/FnjXFshs
我可以使用python这样做,但我觉得放入终端有点太多了:
x = set([i.strip() for i in open('wn-rb.dic')])
y = set([i.strip() for i in open('wn-s.dic')])
z = x.intersection(y)
outfile = open('reverse-diff.out')
for i in z:
print>>outfile, i
答案 0 :(得分:28)
如果您想获得重复行的列表而不诉诸AWK,可以使用-d
flag to uniq:
sort file1 file2 | uniq -d
答案 1 :(得分:12)
正如@tjameson所说,它可以在另一个线程中解决。
只是想发布另一个解决方案:
sort file1 file2 | awk 'dup[$0]++ == 1'
请参考awk guide获取一些awk 基础知识,当一行的模式值为真时,此行将为 印刷
dup [$ 0]是一个哈希表,其中每个键都是输入的每一行,
原始值为0,一旦出现此行,则递增
它再次出现,值应为1,因此dup[$0]++ == 1
为真。
然后打印这一行。
请注意,这仅适用于任一文件中没有重复项的情况,如问题中指定的那样。