我比较了2个文件并得到
1c1
< 1
---
> 1
两个文件都只包含“ 1”。这有什么不同?
-u
选项可能更易于理解。
cp 1 2
(所以覆盖2),然后您可以100%b确信它们是相同的;)
vimdiff file1 file2
?:D
我比较了2个文件并得到
1c1
< 1
---
> 1
两个文件都只包含“ 1”。这有什么不同?
-u
选项可能更易于理解。
cp 1 2
(所以覆盖2),然后您可以100%b确信它们是相同的;)
vimdiff file1 file2
?:D
Answers:
第一行:a
代表已添加,d
已删除和c
已更改。原始文件的行号出现在这些字母的前面,修改后的文件的行号出现在这些字母的后面。
第二行:与<
的行来自文件1,与文件2不同。
第三行是分隔线。
第四行:与>
的行来自文件2,与文件1不同。
(如果您看到过,=
则意味着两个文件中的行都相同)
您的问题可能是空格或其他非人类可读的字符:这些字符也会触发差异。
有一些选项可以操纵输出。
例:
rinzwind @ discworld:〜$更多1 测试 测试2 测试3 rinzwind @ discworld:〜$更多2 测试 测试2 测试3
上下文格式:
rinzwind @ discworld:〜$ diff -c 1 2 *** 1 2011-08-13 17:05:40.433966684 +0200 --- 2 2011-08-13 17:11:24.369966629 +0200 *************** *** 1,3 **** 测试 !测试2 测试3 -1,3 ---- 测试 !测试2 测试3
一种 ”!” 表示两个文件中对应的行之间的更改。“ +”表示一行的添加,而空格表示未更改的行。修补程序的开头是文件信息,包括完整路径和时间戳。每个大块的开头是适用于文件中相应更改的行号。三个星号组之间出现的数字范围适用于原始文件,而三个破折号组适用于新文件。大块范围指定相应文件中的开始和结束行号。
扩展Lekensteyn关于统一格式的评论:
rinzwind @ discworld:〜$ diff -u 1 2 --- 1 2011-08-13 17:05:40.433966684 +0200 +++ 2 2011-08-13 17:11:24.369966629 +0200 @@ -1,3 +1,3 @@ 测试 -test2 + test2 测试3
该格式以与上下文格式相同的两行标题开头,不同之处在于原始文件以“ ---”开头,新文件以“ +++”开头。之后是一个或多个包含文件中的行差异的变更请求。不变的上下文行之前带有空格字符,加法行之前带有加号,删除行之前带有减号。
一些有用的选项:
-b
忽略空白量的变化。
-w
忽略所有空白。
-B
忽略所有空白行。
-y
在2列中输出。
man diff
; 复制))
od -x1z
在两个文件上运行并比较od
输出。它应该找到文件之间的任何隐藏差异。
当比较带有不可打印字符的文件时,我发现od(八进制转储)非常方便(特别是diff认为文件是“二进制”的,因此仅告诉您它们确实有所不同)。
在下面的示例中,我创建了一对可能与原始文件相似的文件,然后对原始输出进行比较;接下来,我对两个不同的“ od”输出进行比较。
$ echo 1> 1
$ echo“ 1”> 2
$ diff 1 2
1c1
< 1
- ---
> 1
$ od -c 1> 1.od
$ od -c 2> 2.od
$ diff 1.od 2.od
1,2c1,2
< 0000000 1 \n
< 0000002
---
> 0000000 1 \n
> 0000003
$ od -Ax -c -t x1 1> 1.od
$ od -Ax -c -t x1 2> 2.od
$ diff 1.od 2.od
1,3c1,3
< 000000 1 \n
< 31 0a
< 000002
---
> 000000 1 \n
> 31 20 0a
> 000003