Diff-command:不打印不同的行,但仍然说两个文件不同

时间:2012-04-25 04:34:24

标签: unix diff

我正在使用diff命令来比较两个文本文件。它们需要完全匹配。

所以我使用diff:

diff binary.out binary.expected

(顺便说一句,这些文件不是二进制文件。它们是文本文件。我称之为二进制文件,因为这是项目的名称)

得到了

Binary files binary.out and binary.expected differ

当我使用另一个差异工具时,最聪明的人(AKA人类),两个文件之间真的没什么不同。

有没有人碰巧知道这里发生了什么?

感谢。

2 个答案:

答案 0 :(得分:7)

来自diffutils

diff说明了以下关于text / binary的内容:

  

diff通过检查确定文件是文本还是二进制文件   文件中的前几个字节;确切的字节数是系统   依赖,但通常是几千。如果每个字节都在   该文件的一部分是非空的,diff认为该文件是   文本;否则它认为该文件是二进制文件。

因此,GNU diff对文本是什么有一个非常开放的定义,并且使用--text选项强制它将文件视为文本应该很少需要。

您是否检查过binary.outbinary.expected是否包含空字符?您的差异计划是什么版本?

答案 1 :(得分:2)

确保忽略差异选项中的空格。

它也可能会看到Unicode字符并将其解释为二进制。查看您的diff工具是否有强制文本模式的选项。