是否有测量文件差异百分比的工具?

NT3*_*3RP 9 linux diff command-line

我想比较两个文本文件。通常,我可以diff用来比较两个文件以查看差异。这很好,只是我更关心两个文件的百分比差异。

例如:

File A:
    banana
    TESTING

File B:
    TESTING
Run Code Online (Sandbox Code Playgroud)

在这种情况下,结果将是 50% 的差异。我查看了wdiff,它主要是有效的,除了它逐字查看元素(实际上,我可以通过执行 得到上面的结果wdiff -s filea fileb)。

是否存在提供按字符/按字节级别的文件百分比差异的工具?

小智 7

对两个文本文件进行逐字符比较实际上是一种Levenshtein 距离计算。Linux 中没有一个通用的独立程序可以执行此计算,但是有一些库函数(我知道 PHP 有一个)和大量在线示例代码用于此计算。

另一个小警告是,Levenshtein 距离严格地是两个字符串之间变化的数量,因此如果您正在寻找百分比,则需要对计算出的距离进行归一化。除以两个字符串的长度(文本文件的大小)的平均值是一种广泛使用的规范化。


Edu*_*scu 5

我对两组转录文件也遇到了类似的问题,我按照投票最多的答案中的建议使用了 Levenshtein 距离,但发现使用 python 是更好的选择。

pip install python-Levenshtein
Run Code Online (Sandbox Code Playgroud)

代码如下:

import sys

from Levenshtein import *

txt1 = open(sys.argv[1]).read()
txt2 = open(sys.argv[2]).read()

print("distance:", distance(txt1,txt2))
Run Code Online (Sandbox Code Playgroud)

使用:

python distance.py file1 file2
Run Code Online (Sandbox Code Playgroud)


Chr*_*ava 4

尝试将输出 if diff 通过管道传输到wc命令。有多种选择,但-l可能会给您提供适当的更改行数计数。由于 diff 在行之前和之后输出以及其他一些格式,因此您可能必须将结果除以该因子,然后将其放在行中整个文件长度的结果上。wc -l

  • diff -u 0 删除上下文 (2认同)