![我可以强制某些行匹配的差异工具](https://linux22.com/image/676355/%E6%88%91%E5%8F%AF%E4%BB%A5%E5%BC%BA%E5%88%B6%E6%9F%90%E4%BA%9B%E8%A1%8C%E5%8C%B9%E9%85%8D%E7%9A%84%E5%B7%AE%E5%BC%82%E5%B7%A5%E5%85%B7.png)
我有想要比较的文件,并且我需要一种方法来强制行匹配,以便算法能够正确选择要比较的块。
例如:FILE1
test1
subline1
subline2
subline3
test2
subline1
subline2
subline3
subline4
test3
subline1
subline2
subline3
test4
subline1
test5
subline2
subline3
subline4
文件2
test1
subline1
subline2
subline3
test3
subline1
subline2
subline3
subline4
test4
subline1
subline2
subline3
subline4
无论我使用什么工具,我都无法强制在“测试”行上完美匹配,而且由于块的内容相似,所以总是匹配不正确。
参见下图: Notepad++ 比较 温姆杰
Meld 和 diff 也不起作用。
谢谢
答案1
diff
是一种基于线的算法,但看起来你想要匹配的不是线,而是线块。
一种可能性是使用中间步骤,通过将行中的块连接在一起将每个块放在一行上,然后就可以使用diff
结果。
git diff
它支持 4 种不同的差异算法,即使两个文件不在 git repo 中,你也可以对它们进行差异比较:
--diff-algorithm={patience|minimal|histogram|myers}
Choose a diff algorithm. The variants are as follows:
default, myers
The basic greedy diff algorithm. Currently, this is the default.
minimal
Spend extra time to make sure the smallest possible diff is produced.
patience
Use "patience diff" algorithm when generating patches.
histogram
This algorithm extends the patience algorithm to "support low-occurrence common elements".
For instance, if you configured diff.algorithm variable to a non-default value and want to use the
default one, then you have to use --diff-algorithm=default option.
但是,在测试您的文件时,所有算法都产生相同的结果diff
。
还有其他用于区分结构化格式的工具,例如 XML 或 JSON,您想要的逐块差异既不是基于行的也不是基于其他正式结构的。
最终,我认为要使差异算法适合您,您的数据需要基于行或其他正式格式。
答案2
TotalCommander 将帮助您(按内容比较)