![如何比较两个文件中的非打印字符](https://linux22.com/image/1353660/%E5%A6%82%E4%BD%95%E6%AF%94%E8%BE%83%E4%B8%A4%E4%B8%AA%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E9%9D%9E%E6%89%93%E5%8D%B0%E5%AD%97%E7%AC%A6.png)
为了在两台计算机之间共享配置文件,我通过我的 gmail 帐户将文件通过电子邮件发送给我自己。当我在第二台计算机上加载配置文件时,程序无法读取每一行。我怀疑是换行符的问题(dos 与 unix 风格),因此在 gvim 中打开了文件。正如我所料,我没有看到任何 ^M。'set list' 没有显示任何奇怪的东西 - 只有文件文本,每行都以 '$' 结尾,正如我所料。它看起来非常好。文件的 cat 看起来与我预期的一样。
出于无奈,我将文件移开,并在分割的 vim 会话中手动重新输入文件内容(只有大约 20 行)。我对这两个文件运行了 gvim -d,结果没有显示任何差异。
我运行了使用配置文件的程序,果然,它现在能够正常读取新输入的文件。
我对这两个文件进行了 md5sum 计算,结果发现总和不同。我对原始文件和新输入的文件进行了 diff 计算,结果显示文件的每一行都不同。但我在输出中看不到任何差异。
所以,我很好奇:我可以使用什么工具来查看这两个文件之间的差异? gvim -d 显示没有差异,而 diff 显示它们都不同,但输出看起来相同。
如果我可以附加这两个文件,我会的。
答案1
将od -c
每个文件转储为十六进制,然后比较结果的差异。
od -c file1 > file1.hex
od -c file2 > file2.hex
diff file1.hex file2.hex
答案2
我认为更简单的方法就是通过管道将您的差异输出cat -t
diff file1 file2 | cat -t
此方法还可与各种版本控制工具配合使用。
bzr diff | cat -t