Mic*_*ael 7 diff whitespace colors
我发现这个问题有答案git diff。但是,我没有使用任何类型的版本控制来比较文件(我什至在我尝试比较的机器上没有可用的版本)。
基本上,类似于引用的问题,我试图查看空格的变化。该diff命令可能会显示:
bash-3.2$ diff 6241 6242
690c690
<
---
>
Run Code Online (Sandbox Code Playgroud)
但我不知道那是换行符,换行符和空格,还是什么。我需要知道两个文档之间的确切更改,包括空格。我已经尝试过cmp -l -b并且它有效,但是当有很多变化到它也不是真正有用的地步时,它很难阅读。
我真正想要的是让空白以某种方式呈现的某种方式,这样我就可以准确地说出空白是什么,例如颜色或 ^J、^M 等。我在手册中没有看到任何内容;diff --version显示 GNU 版本 2.8.1。
再举一个例子,我还尝试diff通过管道传输through的输出hexdump。
bash-3.2$ diff 6241 6242 | hexdump -C
00000000 36 39 30 63 36 39 30 0a 3c 20 0a 2d 2d 2d 0a 3e |690c690.< .---.>|
00000010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00000020 20 20 20 20 0a | .|
Run Code Online (Sandbox Code Playgroud)
从这一点上我很明显添加了一堆空格字符。但是,不明显的是在换行符之前插入了一个空格,这cmp告诉我:
bash-3.2$ cmp -l -b 6241 6242
33571 12 ^J 40
33590 40 12 ^J
33591 165 u 40
...
Run Code Online (Sandbox Code Playgroud)
Stu*_*aie 14
diff单独使用命令没有简单的方法来做到这一点。解决问题的一种方法是使用cat -tewhich 将制表符转换为^I并写入$行尾,使其更易于查看。
$ printf >test1 'hello \t \n'
$ printf >test2 'hello \t\n'
$ diff test[12] | cat -te
1c1$
< hello ^I $
---$
> hello ^I$
Run Code Online (Sandbox Code Playgroud)