diff输出格式解析

1 命令格式

$diff <变动之前的文件> <变动之后的文件>

2 diff文件的三种格式

normal diff

context diff

unified diff

3 示例

变动之前的文件:

b

bc

b

b

b

每行一个b,共5行。

变动之后的文件:

b

bcd

b

b

b

共5行,第二行一个d,其它行都是b。

4 正常格式的diff

这个diff输出的只有difference本身,不包括difference所在的代码本身。

diff f1.txt f2.txt

输出如下:

2c2

< bc

------

> bcd

第一行说明变动的位置:前面的2是前面文件中的位置,后面一个2是后面文件中的位置,表示行号。

c表示change,即内容改变,如果是a的话,表示该行是新增加的,如果是d的话,表示该行被删除了。

小于号“<”表示删除该行,大于号">"表示增加该行。小于号和大于号后面的内容是该行的内容。

5 context diff

diff -c f1.txt f2.txt

输出如下:

*** f1.txt    2016-12-25 23:53:02.619930781 -0500

--- f2.txt      2016-12-25 23:52:54.131930652 -0500

***************************

*** 1,5 ***

b

!bc

b

b

b

---1,5---

b

!bcd

b

b

b

前面两行是两个文件的基本信息,即文件名和时间,后面是时区。并且,*表示是旧的文件,-表示的是新的文件。

***1,5***表示1到5行的所有内容。对于---1,5---同样。

!表示本行的内容有改变。同样,a表示增加一行,d表示减少一行。

可见,对于context格式的输出而言,f1和f2文件的上下文是分别显示的,

因此有很多重复的内容,因此有了unified格式,也就是说,f1和f2公用同

一个上下文。

6 unified diff

$ diff -u f1.txt f2.txt

输出如下:

--- f1.txt        2016-12-25 23:53:02.619930781 -0500

+++ f2.txt      2016-12-25 23:52:54.131930652 -0500

@@ -1,5 +1,5 @@

b

-bc

+bcd

b

b

b

-表示f1.txt文件,+表示f2.txt文件。

1,5表示第1行到第5行。

1,5表示第1行到第5行。

-表示原文件的行,+表示新文件的行。

所以,只看-的话就是原文件,只看+的话,就是新文件了。

原文地址:https://www.cnblogs.com/hustdc/p/6221966.html