Diff 的行为非常奇怪,当整个块中的短位被更改、删除或添加时,会将长块报告为已删除

Diff 的行为非常奇怪,当整个块中的短位被更改、删除或添加时,会将长块报告为已删除

我有两个文件,都是代码的输出,我通过这些代码cut仅查看每行的前 26 个字符。这两个文件都是代码测量的参数列表,例如“总横截面”或“中子寿命”,以及代码使用的选项(如“MPI_TASKS”或“COMPILE_DATE”),因此 file1 如下所示:

param1  
param2
...
param2000

File2看起来基本相同,但是删除或更改了很多参数,并且添加了一些不同的参数。

没有报告这些更改/添加/删除发生的位置,而是diff告诉我第 12 行到第 1750 行file1已被删除,然后发现其余文件有大约 300 行差异。即使在这些差异中,它也只报告了其中大约 50 个的变化,其余的则报告为添加/删除。

我真的很困惑,不知道为什么diff会这样。我尝试过使用一些选项,例如-aBCHw.

我可以使用更好的实用程序吗?该cut实用程序是否会造成问题?

答案1

默认情况下,diff假设一些语境围绕差异的每个部分,称为。如果你减少上下文(使用-C选项),您可以减少块大小并使其不太可能将大(重叠)块报告为大差异。

相关内容