比较忽略顺序的两个文件

时间:2012-05-22 18:57:52

标签: bash unix diff

我有两个文件,其中行的顺序无关紧要,我想比较它的内容。

我查看了diff文档,但找不到类似--ignore-order的内容。

任何提示?

3 个答案:

答案 0 :(得分:39)

首先对文件进行排序:

$ sort file1 > file1.sorted
$ sort file2 | diff - file1.sorted

此外,虽然我个人不鼓励这种事情,但如果你使用bash并且在你的系统上启用了这个功能,你可以通过使用进程替换来避免临时文件:

$ diff <(sort file1) <(sort file2)

答案 1 :(得分:1)

也许你从错误的一面看问题。也许您想对两个文件进行排序然后进行比较?

否则,

diff file1 file2 

会完全满足您的要求。

答案 2 :(得分:0)

不是bash,但使用python仍然很快:

def check_diff(file1,file2):
    check = {}
    for file in [file1,file2]:
        with open(file,'r') as f:
            check[file] = []
            for line in f:
                check[file].append(line)
    diff = set(check[file1]) - set(check[file2])
    for line in diff:
        print(line.rstrip())