差异中1,45c1,45的含义是什么?

时间:2013-12-21 19:44:29

标签: diff

我运行了以下diff命令:

diff out2.txt ourOutput2.txt 

并将此作为输出:

1,29c1,29

当我跑步时:

diff -iw out2.txt ourOutput2.txt 

没有问题。问题似乎是空白,但我看不到任何白色空间差异,而且tkdiff也没有突出显示蓝色的任何空白。

有什么问题?

由于

2 个答案:

答案 0 :(得分:1)

我相信输出声明第1-29行在第一个和第二个文件之间发生了变化。我会在每个文件上运行hexdump -C并比较输出。如果没有更多信息,我会怀疑有CR-LF与LF的尾随空格或不同的行结尾。

以下是一些要检查的事项:

  1. 文件大小不同吗?
  2. diff -w显示差异吗?
  3. diff --strip-trailing-cr显示差异吗?

答案 1 :(得分:0)

如果diff遇到问题,但没有明显的差异,请尝试使用diff -b,这实际上会将换行符以外的所有空格折叠到一个空格中,并且任何白色 - 该行末尾的空格(在换行符之前)被忽略。

如果您确实希望找到原因,则需要cmp -l。回车(CR)将输出为15,换行(LF)将为12.这将表示行结尾的问题,因此整个文件将进行不同的比较。将cmp -l的输出传递给head -n 1,因为在这种情况下输出的其余部分将无用。

如果没有发生这种情况,您可能希望在同一行上查找11(制表符)和40(空格)(如果“out2.txt”是示例输出,则可能在“ourOutput2.txt”时使用空格“使用制表符,反之亦然。 grep可以使用cmp -l "out2.txt" "ourOutput2.txt" | grep '.[[:space:]]*11' | grep '.[[:space:]]*40'帮助过滤此类行。

除此之外,每个文件的十六进制转储将显示更多信息。