Linux下文本比對方法:diff命令

diff是Unix系統的一個很重要的工具程序。它用來比較兩個文本文件的差別,是代碼版本管理的基石之一。 git

diff命令的輸出格式有三種:
bash

  1. 正常格式(normal diff)
  2. 上下文格式(context diff)
  3. 合併格式(unified diff)

舉個例子,如今有1個文件a.txt,裏面內容以下:工具


咱們先經過複製一份文件b.txtthis

sudo cp a.txt b.txt複製代碼

並把b.txt內容第二行改成其餘的內容,以下:spa



(1)正常格式code

正常格式下咱們無需加任何選項,直接以下比對就好:orm

diff a.txt b.txt複製代碼

執行完的結果以下:
cdn


咱們一行一行來解釋上圖的含義。blog

行一行:2c2it


第一個2表示文件a.txt中第2行有變化,後面的2表示a.txt經過變化成爲b.txt中的第2行。中間的c就是具體的變化了。c表示改變(change),其它類型還有d刪除(delete),a增長(addition)。


第二行:< line 2


表示a.txt文件中去除第2行的內容,其中小於號表示去除。


第三行:------


分隔線


第四行:> this is 2


表示b.txt文件中增長第2行的內容,其中大於號表示增長。


(2)上下文格式

因爲在正常格式下,提示信息比較少,咱們沒法快速定位所修改的地方,常常須要打開文件才知道修改細節。因此,爲了給出更多的信息,引入了上下文格式。它的使用命令以下:

diff -c a.txt b.txt複製代碼


上圖的輸出結果的具體含義以下:

第1行和第2行表示修改前及修改後的文件及更新時間。下面的*** 1,3 ****表示a.txt文件顯示的從第1行開始到第3行爲止的內容。line 2前的歎號(!)表示該行有改動,若是該行被刪除,則爲減號(-),若是該行被增長,則爲加號(+)。後面幾行的含義相似。

(3)合併格式

這種格式是正常格式與上下文格式的綜合版,同時這種格式也是git diff所採用的格式。使用這種格式的命令是:

diff -u a.txt b.txt複製代碼


上圖的輸出結果詳細含義以下:

第1行和第2行表示修改前及修改後的文件及更新時間。後面的-line 2表示原文件a.txt裏的內容,+this is 2表示b.txt裏的內容。


除了以上三種格式外,還有另一直更直觀的方式——並排格式。這種顯示格式的命令格式以下:

diff a.txt b.txt -y -W 50複製代碼


這種格式就是以並列的格式進行顯示,也很直觀明瞭。第2行裏,有個「|」符號,表示這行有更改。另外,若是前面是「<」,表示後面文件比前面文件少了1行內容;若是是">",表示後面文件比前面文件多了1行內容。

相關文章
相關標籤/搜索