如何比较两个文件中的非打印字符

如何比较两个文件中的非打印字符

为了在两台计算机之间共享配置文件,我通过我的 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

相关内容