我找到的所有diff工具都只是逐行比较而不是逐字符比较。是否有任何库可以提供单行字符串的详细信息?也许还有一个百分比差异,不过我猜可能有单独的函数处理这个问题?
这个算法是逐字逐句进行比较的:
http://github.com/paulgb/simplediff
在Python和PHP中都有实现,甚至可以使用<ins>
和<del>
标签输出HTML格式的结果。
最近我也在寻找类似的东西,发现了wdiff。它是基于单词操作的,而不是字符,但这是否接近你所需要的呢?
diff <(cat file1 | tr " " "\n") <(cat fil2 | tr " " "\n")
,但问题是输出格式很差。最好使用 wdiff file1 file2
。感谢 @Michael Williamson 的回答。 - Aleksandr Levchukdiff <(cat a1 | sed 's/./\0\n/'g) <(cat a2 | sed 's/./\0\n/'g)
。 - Aleksandr Levchuk你可以实现一个简单的Needleman-Wunsch算法。该算法的伪代码已经在维基百科上提供:http://en.wikipedia.org/wiki/Needleman%E2%80%93Wunsch_algorithm