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

One*_*ree 6 unix diff

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

所以我使用diff:

diff binary.out binary.expected

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

得到了

Binary files binary.out and binary.expected differ

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

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

谢谢.

hlo*_*dal 7

diff来自diffutils的关于text/binary的内容如下:

diff通过检查文件中的前几个字节来确定文件是文本还是二进制文件; 确切的字节数取决于系统,但通常为几千字节.如果文件该部分的每个字节都是非空的,则diff将该文件视为文本; 否则它认为该文件是二进制文件.

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

你检查,如果binary.out还是binary.expected包含空字符?您的差异计划是什么版本?


gco*_*ard 4

确保忽略 diff 选项中的空格。

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