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

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

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

有什么建议吗?

【问题讨论】:

标签: bash unix diff


【解决方案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 
      

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

      【讨论】:

        猜你喜欢
        • 2013-03-21
        • 1970-01-01
        • 2016-11-01
        • 2013-05-08
        • 1970-01-01
        • 2023-03-21
        • 2020-01-19
        • 2022-01-25
        • 2018-08-16
        相关资源
        最近更新 更多