29

行の順序が関係ない 2 つのファイルがあり、その内容を比較したいと考えています。

ドキュメントを調べましdiffたが、のようなものは見つかりませんでし--ignore-orderた。

任意のヒント?

4

3 に答える 3

59

最初にファイルを並べ替えます。

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

また、個人的にはこの種のことはお勧めしませんが、bash を使用していて、システムでこの機能が有効になっている場合は、プロセス置換を使用して一時ファイルを回避できます。

$ diff <(sort file1) <(sort file2)
于 2012-05-22T18:59:53.830 に答える
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())
于 2018-06-15T13:29:22.533 に答える
1

問題を間違った側から見ているのかもしれません。おそらく、両方のファイルを並べ替えてから比較したいと思いませんか?

さもないと、

diff file1 file2 

あなたが求めていることを正確に行います。

于 2012-05-22T19:01:26.537 に答える