有没有一种方法/工具可以并排显示两个文件之间的差异,仅以类似的方式突出显示差异,kdiff3
但使用相当快的工具?有人提出了类似的问题这里大约 6 年前,但没有给出有用的答案。更好的是理解数据结构的工具,例如csv
?我经常处理单列中可能仅因符号或数字格式而不同的数据文件,为此目的diff
毫无用处。kdiff3
显示这样的数据:
它立即告诉您数据文件之间有什么不同。它不仅向您展示整条生产线的不同,还向您展示了不同之处。但是,kdiff3
效率极其低下,比较 2 个 17 MB 的文件需要 10 分钟,这太荒谬了。 (我曾经在Windows上尝试过一个叫做Total Commander的东西,它有这个功能,它的比较效率让我大吃一惊)。了解数据结构并仅显示不同的字段将是一个巨大的优势,但csv
我发现的所有比较器都无法处理其中一个文件具有不同列数的情况(假设您向数据添加一列),并且它们可以只比较相同的结构,所以我很擅长kdiff3
ortotal commander
风格的方法。我尝试过vimdiff
--- 说它无法在文件上运行 diff,meld
--- 慢并且最终什么也不做, icdiff -- 慢,等等。
正如我正在寻找的比较和说明,我到达虚拟机total commander
(通过网络连接)比较相同的两个文件,并在 2 秒内(与本地 SSD 上的 10 分钟相比kdiff3
),我得到:
答案1
kdiff3
10 年没有更新了;我不认为你真的想使用它;如果这种 UI 风格正是您所追求的,meld
那么可能更符合您的需求。无论如何,你已经尝试过了;我真的无法重现缓慢的情况,我尝试使用两个大小相似的文件进行大约 1500 个更改,并且需要大约 12 秒才能给出所需的比较。所以,也许您的这些软件版本只是真的真的老的?即使我利用所有 CPU 核心nice
以高水平运行,我也无法重现您的缓慢程度。stress
如果你主要需要快速:尝试(有效外部git 存储库!)git diff --word-diff=color fileA.txt fileB.txt
。
关于结构:
也许你实际上最好使用一个可以做到这一点的工具不是尝试逐行比较两个文本文件,但使用一个工具,只需读取两个 CSV 并仅输出不同的记录。但这将进入(简短但)非常特定于应用程序的脚本,并且会离开您的问题的范围。
¹ 它作为 KDE Gear 的一部分继续存在,但您的屏幕截图看起来并非如此。
答案2
你看过吗三角洲?它与 git 的耦合非常紧密,但它也可以用于比较 git 之外的文件。