比较两个文件忽略顺序

Posted

技术标签:

【中文标题】比较两个文件忽略顺序【英文标题】:Compare two files ignoring order 【发布时间】:2012-05-29 07:32:18 【问题描述】:

我有两个行序无关的文件,我想比较一下它的内容。

我查看了 diff 文档,但找不到像 --ignore-order 这样的东西。

有什么建议吗?

【问题讨论】:

在unix.stackexchange.com/questions/23303/…查看我的回答 【参考方案1】:

先对文件进行排序:

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

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

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

【讨论】:

【参考方案2】:

不是 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())

【讨论】:

【参考方案3】:

也许您从错误的角度看待问题。也许您想对这两个文件进行排序然后比较它们?

否则,

diff file1 file2 

会完全按照您的要求进行。

【讨论】:

以上是关于比较两个文件忽略顺序的主要内容,如果未能解决你的问题,请参考以下文章

在Java中测试两个JSON对象的相等性忽略子顺序[关闭]

比较具有忽略项目顺序的切片字段的结构与stretchr/testify

比较引用类型对象的集合是不是相等,忽略集合中项目的顺序

在bash shell 上如何按字母顺序比较两个字符串 ?

数据库单元应忽略行的顺序

perl 的 XML::SemanticDiff 可以硬塞到两个 XML 文件的顺序不可知比较中吗?