我有10个大的XML文件,有些文件与其他文件不同(它代表了流程步骤中的数据)。
如何比较自动?
我知道我可以使用像WinMerge或眼睛这样的工具手动比较它们,但我不喜欢这种方法。
我希望它能在Windows机器上完成,但我安装了Cygwin。
我想我可以某种方式使用 git diff 来做到这一点,但......怎么样?
答案 0 :(得分:2)
如果您只想知道差异,最简单的(不是最快的!)将对它们进行哈希并比较结果。 md5sum yourfile * .xml并查看哪些条目相同。
以不同的方式比较它们会更有效,但我认为没有标准的工具 - 但是小程序会这样做。
Open all files to be compared
Loop over the character indices
fetch character from each, compare
remove from list those which are not identical / group those who have the same
因此,就第一个区别而言,您可以缩小搜索范围,具体取决于您要执行的操作。默认情况下,计算校验和/哈希将对整个文件执行此操作;你写了关于大文件。
我现在要使用md5sum(shasum,...)。
答案 1 :(得分:2)
您是否需要支持XML的比较,例如一个认识到属性顺序不重要的人?如果是这样,您可以通过解析它们并使用XPath或XQuery中的deep-equal()函数来比较文件。或者,您可以将文件转换为XML规范形式,然后按字节顺序比较规范化文件。
如果您需要分析差异,而不仅仅是一个布尔值告诉您它们不同,那么有一种名为DeltaXML的产品专门用于此。这不是免费的。
答案 2 :(得分:1)
如果您只想快速确定文件是否相同,您可以考虑使用散列算法 - 每个文件md5并比较生成的散列?
答案 3 :(得分:1)
比较两个文件的最简单方法是使用diff file1 file2
。您可以添加-b
和-B
选项以忽略空格和白线差异:diff -bB file1 file2
。试试man diff
。
如果您想为大量文件执行此操作,请使用脚本。
如果您比较同一文件的两个版本,则 git diff
是相关的。
MY2C