我发现this question有git diff
的答案。但是,我不是使用任何类型的版本控制来比较文件(我甚至没有在我想要比较的机器上有一个可用的文件)。
基本上,类似于引用的问题,我试图看到空白的变化。 diff
命令可能会显示:
bash-3.2$ diff 6241 6242
690c690
<
---
>
但我不知道这是换行符,新行和空格,还是什么。我需要知道两个文件之间的确切变化,包括空格。我已经尝试了cmp -l -b
并且它有效,但是当它发生很多变化时它很难被阅读,它也没有用。
我真正想要的是以某种方式呈现空白的某种方式,因此我可以准确地确定空白是什么,例如颜色或者^ J,^ M等我手册中没有看到任何内容; diff --version
显示了GNU版本2.8.1。
作为另一个例子,我也尝试将diff
的输出通过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 | .|
从这一点来看,很明显我添加了一堆空格字符。然而,不明显的是在换行符之前插入了一个空格,这是cmp
告诉我的:
bash-3.2$ cmp -l -b 6241 6242
33571 12 ^J 40
33590 40 12 ^J
33591 165 u 40
...
答案 0 :(得分:1)
单独使用diff
命令没有简单的方法可以做到这一点。解决问题的一种方法是使用cat -te
将标签字符转换为^I
,并在行尾添加$
,以便更容易查看。
$ printf >test1 'hello \t \n'
$ printf >test2 'hello \t\n'
$ diff test[12] | cat -te
1c1$
< hello ^I $
---$
> hello ^I$