LINUX DIFF命令

匆匆过客 提交于 2020-10-13 16:13:49

目录

一、正常模式

二、上下文格式(context diff)

 三、合并格式的diff


diff命令本身很简单,需要注意的是要会阅读其输出。       

diff 的模式有三种

        * 正常格式(normal diff)

  * 上下文格式(context diff)

  * 合并格式(unified diff)

一、正常模式

不带参数输出就是正常模式

11]# diff  /dfs/acf/INDEX/202010/10/A1350AOIL05.TXT /dfs/acf/INDEX/202010/11/A1350AOIL05.TXT |more
1,101494c1,26841
< 002538 \A1575A1BPK1\A10A9\A10A902R\A10A902RCH\FORMAT\A1350A10A902RCH.TXT
< 002538 \A1575A1BPK1\A10A9\A10A902R\A10A902RCH\GlassID\A1350A10A902RCH-Mark9.JPG
< 002538 \A1575A1BPK1\A10A9\A10A902R\A10A902RCH\GlassID\A1350A10A902RCH-Mark10.JPG
< 002538 \A1575A1BPK1\A10A9\A10A902R\A10A902RCH\GRAYIMAGE\A1350A10A902RCHDM.JPG
< 002538 \A1575A1BPK1\A10A9\A10A902R\A10A902RCH\GRAYIMAGE\A1350A10A902RCHFPIP000001.JPG

 1,101494c1,26841

它分成三个部分:前面的"1,101494",表示f1的第1-101494行有变化;中间的"c"表示变动的模式是内容改变(change),其他模式还有"增加"(a,代表addition)和"删除"(d,代表deletion);后面的"1,26841",表示变动后变成f2的1,26841

 

  • < 002538 \A1575A1BPK1\A10A9\A10A902R\A10A902RCH\FORMAT\A1350A10A902RCH.TXT
     

前面的小于号,表示要从/dfs/acf/INDEX/202010/10/A1350AOIL05.TXT 当中去除该行(也就是1 - 101494),后面的是内容

 

  • > 013033 \A1575A1BPK1\A10AA\A10AA04W\A10AA04WCD\GRAYIMAGE\A1350A10AA04WCDDM.JPG

 

前面的大于号表示/dfs/acf/INDEX/202010/11/A1350AOIL05.TXT增加了该行,后面的表示该行的内容。

这个和正则中的环视有点像,可以对比理解。

二、上下文格式(context diff)

使用参数 c

11]# diff -c /dfs/acf/INDEX/202010/10/A1350AOIL05.TXT /dfs/acf/INDEX/202010/11/A1350AOIL05.TXT |more
*** /dfs/acf/INDEX/202010/10/A1350AOIL05.TXT	2020-10-10 23:59:37.108102000 +0800
--- /dfs/acf/INDEX/202010/11/A1350AOIL05.TXT	2020-10-11 03:13:37.984228000 +0800
***************
*** 1,101494 ****
! 002538 \A1575A1BPK1\A10A9\A10A902R\A10A902RCH\FORMAT\A1350A10A902RCH.TXT
! 002538 \A1575A1BPK1\A10A9\A10A902R\A10A902RCH\GlassID\A1350A10A902RCH-Mark9.JPG
! 002538 \A1575A1BPK1\A10A9\A10A902R\A10A902RCH\GlassID\A1350A10A902RCH-Mark10.JPG
! 002538 \A1575A1BPK1\A10A9\A10A902R\A10A902RCH\GRAYIMAGE\A1350A10A902RCHDM.JPG
! 002538 \A1575A1BPK1\A10A9\A10A902R\A10A902RCH\GRAYIMAGE\A1350A10A902RCHFPIP000001.JPG

第一部分的两行,显示两个文件的基本情况:文件名和时间信息。

*** /dfs/acf/INDEX/202010/10/A1350AOIL05.TXT    2020-10-10 23:59:37.108102000 +0800
--- /dfs/acf/INDEX/202010/11/A1350AOIL05.TXT    2020-10-11 03:13:37.984228000 +0800

 "***"表示变动前的文件,"---"表示变动后的文件。

第二部分显示变动前的文件即10号的文件

*** 1,101494 ****
! 002538 \A1575A1BPK1\A10A9\A10A902R\A10A902RCH\FORMAT\A1350A10A902RCH.TXT
! 002538 \A1575A1BPK1\A10A9\A10A902R\A10A902RCH\GlassID\A1350A10A902RCH-Mark9.JPG
! 002538 \A1575A1BPK1\A10A9\A10A902R\A10A902RCH\GlassID\A1350A10A902RCH-Mark10.JPG
 



文件内容的每一行最前面有一个标记位。 如果为空,表示该行无变化 如果是感叹号(!),表示该行有改动 如果是减号(-),表示该行被删除 如果是加号(+),表示该行为新增。

 三、合并格式的diff

使用参数 u 代表unified

如果两个文件相似度很高,那么上下文格式的diff,将显示大量重复的内容,很浪费空间。1990年,GNU diff率先推出了"合并格式"的diff,将f1和f2的上下文合并在一起显示。

11]# diff -u /dfs/acf/INDEX/202010/10/A1350AOIL05.TXT /dfs/acf/INDEX/202010/11/A1350AOIL05.TXT |more
--- /dfs/acf/INDEX/202010/10/A1350AOIL05.TXT	2020-10-10 23:59:37.108102000 +0800
+++ /dfs/acf/INDEX/202010/11/A1350AOIL05.TXT	2020-10-11 03:13:37.984228000 +0800
@@ -1,101494 +1,26841 @@
-002538 \A1575A1BPK1\A10A9\A10A902R\A10A902RCH\FORMAT\A1350A10A902RCH.TXT
-002538 \A1575A1BPK1\A10A9\A10A902R\A10A902RCH\GlassID\A1350A10A902RCH-Mark9.JPG
-002538 \A1575A1BPK1\A10A9\A10A902R\A10A902RCH\GlassID\A1350A10A902RCH-Mark10.JPG
-002538 \A1575A1BPK1\A10A9\A10A902R\A10A902RCH\GRAYIMAGE\A1350A10A902RCHDM.JPG

第一部分

 "---"表示变动前的文件,"+++"表示变动后的文件。

第二部分

@@ -1,101494 +1,26841 @@

前面的"-1,101494 "分成三个部分:减号表示第一个文件(即f1),"1"表示第1行,"101494"表示连续101494行。合在一起,就表示下面是第一个文件从第1行开始的连续101494行。同样的,"+1,26841"表示变动后,成为第二个文件从第1行开始的连续26841行。

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!