使用Beyond Compare 3或4进行逐行比较(忽略顺序)

12

我试图使用Beyond Compare 3或4逐行比较文件内容。但是有一个警告:文件中的行不一定按相同顺序排列。以下是示例:

示例1:

File 1 contents:
value1.key=mango
value2.key=pear

File 2 contents:
value2.key=pear
value1.key=mango

This should say "files identical" on comparison.

示例2:

File 1 contents:
value1.key=mango
value2.key=pear
value3.key=apple

File 2 contents:
value2.key=pear
value3.key=banana
value1.key=mango

This should report only the following in the comparison:
value3.key=apple | value3.key=banana

示例 3:

File 1 contents:
value1.key=mango
value2.key=pear
value3.key=apple

File 2 contents:
value3.key=apple
value1.key=mango

This should report only the following in the comparison:
value2.key=pear

请问使用Beyond Compare能否实现这个目标?


如果你可以先对两个文件进行排序,那么可以使用diffcomm或者可能还可以用Beyond Compare(虽然我对它不太熟悉)来完成这个任务。如果不能对文件进行排序,可以使用awkpython或者perl等工具来构建每个文件中行的哈希表/映射/字典,然后检查它们是否相等。 - twalberg
1
我已经考虑过了。我在想是否有任何方法可以不进行排序。此外,dos中还有{{sort}}命令可用于对文件内容进行排序。 - techjourneyman
1个回答

27

对于那些仍然感兴趣的人:

在比较文件时,您可以选择文件格式(从工具栏按钮“格式”中选择),只需选择“已排序”,就可以实现这种比较。


无法适用于我的情况,但在Python中打开后,我可以将文件加载为行列表,然后创建一组行,并从列表中减去这些集合。我希望BeyondCompare能够将这些行作为集合加载,而不依赖于排序。 - nmz787

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接