我运行了以下diff命令:
diff out2.txt ourOutput2.txt
并将此作为输出:
1,29c1,29
当我跑步时:
diff -iw out2.txt ourOutput2.txt
没有问题。问题似乎是空白,但我看不到任何白色空间差异,而且tkdiff也没有突出显示蓝色的任何空白。
有什么问题?
由于
答案 0 :(得分:1)
我相信输出声明第1-29行在第一个和第二个文件之间发生了变化。我会在每个文件上运行hexdump -C
并比较输出。如果没有更多信息,我会怀疑有CR-LF与LF的尾随空格或不同的行结尾。
以下是一些要检查的事项:
diff -w
显示差异吗?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'
帮助过滤此类行。
除此之外,每个文件的十六进制转储将显示更多信息。