我正在使用diff命令来比较两个文本文件。它们需要完全匹配。
所以我使用diff:
diff binary.out binary.expected
(顺便说一句,这些文件不是二进制文件。它们是文本文件。我称之为二进制文件,因为这是项目的名称)
得到了
Binary files binary.out and binary.expected differ
当我使用另一个差异工具时,最聪明的人(AKA人类),两个文件之间真的没什么不同。
有没有人碰巧知道这里发生了什么?
感谢。
答案 0 :(得分:7)
diff
说明了以下关于text / binary的内容:
diff
通过检查确定文件是文本还是二进制文件 文件中的前几个字节;确切的字节数是系统 依赖,但通常是几千。如果每个字节都在 该文件的一部分是非空的,diff
认为该文件是 文本;否则它认为该文件是二进制文件。
因此,GNU diff对文本是什么有一个非常开放的定义,并且使用--text
选项强制它将文件视为文本应该很少需要。
您是否检查过binary.out
或binary.expected
是否包含空字符?您的差异计划是什么版本?
答案 1 :(得分:2)
确保忽略差异选项中的空格。
它也可能会看到Unicode字符并将其解释为二进制。查看您的diff工具是否有强制文本模式的选项。