日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

diff命令输出格式解读

發(fā)布時間:2025/3/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 diff命令输出格式解读 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

diff命令輸出格式解讀

1. diff命令的用法

diff命令可以比較兩個文件(或者文件夾)的差異。
命令的用法是:

diff [選項] 改動前的文件(夾) 改動后的文件(夾)

如果是文件夾的比較,需要加【-r】選項。
關(guān)于其他很多選項,可以自行查資料,這里略。

2. diff的三種輸出格式

由于歷史原因,diff有三種格式:

  • 普通格式(normal diff)
  • 上下文格式(context diff),需要加-c選項
  • 合并格式(unified diff),需要加-u選項

為了便于講解,我們先建立兩個文本文件。文件名分別是f1(改動前)和f2(改動后)。
f1的內(nèi)容是:

a a a a

f2的內(nèi)容是:

a a b c d

2.1 普通格式

命令行輸入

$ diff f1 f2

得到的結(jié)果是

3,4c3,5 < a < a --- > b > c > c

上面的輸出分為4個部分。

2.1.1 3,4c3,5用來說明變動位置。

它又分成三個部分:
1. 前面的3,4,表示f1的第3~4行;
2. 中間的c表示變動的模式是內(nèi)容改變(change),其他的模式還有a(增加,addition)和d(刪除,deletion);
3. 后面的3,5,表示f2的第3~5行。

2.1.2 f1中要刪除哪些行

< a < a

前面的小于號,表示要從f1中去除該行,后面的“a”表示該行的內(nèi)容。

2.1.3 分割線

---

用于分割f1和f2的變動情況。

2.1.4 f2中要增加哪些行

> b > c > c

前面的大于號表示f2增加了該行,后面的”b”或者”c”表示該行的內(nèi)容。

2.2 上下文格式

使用方法是加入-c選項(代表context)。

diff -c f1 f2

輸出結(jié)果如下

*** f1 2016-04-17 11:48:13.008810500 +0800 --- f2 2016-04-17 11:48:24.090444400 +0800 *************** *** 1,4 ****aa ! a ! a --- 1,5 ----aa ! b ! c ! c

上面的輸出結(jié)果分為4個部分。

2.2.1 文件名和時間信息

*** f1 2016-04-17 11:48:13.008810500 +0800 --- f2 2016-04-17 11:48:24.090444400 +0800

特別注意:
***表示變動前的文件,---表示變動后的文件。

2.2.2 分割線

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

2.2.3 變動之前的文件f1

*** 1,4 ****aa ! a ! a

*** 1,4 ****表示變動前的文件(即f1)的第1~4行。
另外,文件內(nèi)容的每一行最前面,都有一個標(biāo)記位。如果為空,表示該行無變化;如果是(!),表示該行有改動;如果是減號(-),表示該行被刪除;如果是加號(+),表示該行為新增。

2.2.4 變動后的文件f2

--- 1,5 ----aa ! b ! c ! c

--- 1,5 ----表示變動后的文件(即f2)的第1~5行。其他如上文所述。

2.3 合并格式

如果兩個文件相似度很高,那么上下文格式的diff,將顯示大量重復(fù)的內(nèi)容,很浪費空間。1990年,GNU diff率先推出了“合并格式”的diff,將f1和f2的上下文合并在一起顯示。
它的使用方法是加入-u選項(代表unified)。

輸入命令

$ diff -u f1 f2

輸出結(jié)果是

--- f1 2016-04-17 11:48:13.008810500 +0800 +++ f2 2016-04-17 11:48:24.090444400 +0800 @@ -1,4 +1,5 @@aa -a -a +b +c +c

上面的結(jié)果分為3個部分。

2.3.1 文件名和時間信息

--- f1 2016-04-17 11:48:13.008810500 +0800 +++ f2 2016-04-17 11:48:24.090444400 +0800

---表示變動前的文件,+++表示變動后的文件。

2.3.2 變動位置

@@ -1,4 +1,5 @@
變動的位置放在兩組@@之間。
-1,4表示對于變動前的文件,從第1行開始(包括第1行)連續(xù)4行(即1,2,3,4行)。
+1,5表示對于變動后的文件,從第1行開始(包括第1行)連續(xù)5行(即1,2,3,4,5行)。

2.3.3 變動的具體內(nèi)容

aa -a -a +b +c +c

它將兩個文件的上下文,合并在一起顯示,所以叫做”合并格式”。每一行最前面的標(biāo)志位,空表示無變動,減號表示第一個文件刪除的行,加號表示第二個文件新增的行或者說在第一個文件的基礎(chǔ)上增加的行。

其實變動一個文件,就好比改裝汽車,可以看成是拆掉一分部零件(-)再裝上一部分零件(+)的過程。
下圖說明了行號和文件的對應(yīng)關(guān)系。

【end】

參考資料


阮一峰:讀懂diff

總結(jié)

以上是生活随笔為你收集整理的diff命令输出格式解读的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。