diff(difference)命令常用來比較兩個檔案中的內容,diff 命令在最簡單的情況下,比較兩個檔案的不同,如果使用“-”代替“檔案”引數,則要比較的內容將來自標準輸入,下面良許小編就將Linux diff命令進行詳述,希望對大家有所幫助,

diff 命令是以逐行的方式比較文本檔案的異同處,如果該命令指定進行目錄的比較,則將會比較該目錄中具有相同檔案名的檔案,而不會對其子目錄檔案進行任何比較操作,
diff 命令的基本格式有兩種,分別如下:
- 比較檔案
[root@liangxu ~]# diff [選項] 檔案名1 檔案名2
- 比較目錄,
[root@liangxu ~]# diff [選項] 目錄1 目錄2
diff 命令常用的選項及功能如表 1 所示,
| 選 項 | 功 能 |
|---|---|
| -行數 | 指定要顯示多少行的文本,此引數必須與 -c 或 -u 引數一并使用 |
| -a | diff 只會逐行比較文本檔案 |
| -b | 不檢查空格字符的不同 |
| -B | 不檢查空白行 |
| -c | 顯示全部內文,并標出不同之處 |
| -c 行數 | 與執行“-c-行數”指令相同 |
| -d | 使用不同的演演算法,以較小的單位來做比較 |
| -D | 此引數的輸出格式可用于前置處理器巨集 |
| -e | 此引數的輸出格式可用于 ed 的 script 檔案 |
| -f | 輸出的格式類似 ed 的 script 檔案,但按照原來檔案的順序來顯示不同處 |
| -H | 比較大檔案時,可加快速度 |
| -I | 若兩個檔案在某幾行有所不同,而這幾行同時都包含了選項中指定的字符或字串,則不顯示這兩個檔案的差異 |
| -i | 不檢查大小寫的不同 |
| -l | 將結果交由 pr 程式來分頁 |
| -n | 將比較結果以 RCS 的格式來顯示 |
| -N | 在比較目錄時,若檔案 A 僅出現在某個目錄中,預設會顯示:Only in目錄:檔案 A 若使用 -N 參 數,則 diff 會將檔案 A 與一個空白的檔案比較 |
| -p | 若比較的檔案為 C 語言的程式碼檔案時,顯示差異所在的函式名稱 |
| -P | 與 -N 類似,但只有當第二個目錄包含了一個第一個目錄所沒有的檔案時,才會將這個檔案與空 白的檔案做比較 |
| -q | 僅顯示有無差異,不顯示詳細的資訊 |
| -r | 比較子目錄中的檔案 |
| -s | 若沒有發現任何差異,仍然顯示資訊 |
| -S | 從指定的檔案開始比較目錄 |
| -t | 在輸出時,將 tab 字符展開 |
| -T | 在每行前面加上 tab 字符以便對齊 |
| -u | 以合并的方式來顯示檔案內容的不同 |
| -v | 顯示版本資訊 |
| -w | 忽略全部的空格字符 |
| -W | 在使用 -y 引數時,指定欄寬 |
| -x | 不比較選項中所指定的檔案或目錄 |
| -X | 可以將檔案或目錄型別存成文本檔案,然后在?中指定此文本檔案 |
| -y | 以并列的方式顯示檔案的異同之處 |
| --help | 顯示幫助 |
| --left-column | 在使用 -y 引數時,若兩個檔案某一行內容相同,則僅在左側的欄位顯示該行內容 |
diff 命令的顯示結果有以下兩種方式:
- < 表示第一個檔案中的資料行,
- > 表示第二個檔案中的資料行,
注意,diff 命令能夠分析并輸出兩個檔案的不同的行,diff 的輸出結果表明需要對一個檔案做怎樣的操作之后才能與第二個檔案相匹配(與第一個檔案相比,第二個檔案發生了哪些變化),其中包含三種操作分別為:a=add,c=change,d=delete,diff 命令并不會改變檔案的內容,但是 diff 可以輸出一個 ed 腳本來應用這些改變,
【例 1】比較兩個檔案的不同,
創建兩個樣本檔案,分別命名為 text 和 text1,并分別輸入以下內容:
//test
11
22
33
44
55
66
77
//test1
11
22
aa
33
44
55
bb
66
在終端頁面中輸入命令如下:
[root@liangxu ~]# diff test test1
3c3
<
---
> aa
7c7
<
---
> bb
9,10d8
< 77
<
輸出資訊的含義分別為:
- “3c3”:表示第一個檔案的第 3 行需要修改才能和第二個檔案的第3行相匹配;
- “---”:表示分隔線;
- “>aa”:> 表示第二個檔案,第一個檔案中需要添加的內容為 aa,該內容存放在第二個檔案中;
- “>bb”:> 表示第二個檔案,第一個檔案中需要添加的內容為 bb,該內容存放在第二個檔案中;
- “9,10d8”:表示洗掉第一個檔案中的第 9 和第 10 行才能和第二個檔案中的第 8 行相匹配;
- “<77”:表示第一個檔案中待洗掉的內容為 77,
? 以上就是良許教程網為各位朋友分享的Linux diff命令詳解,
本文由博客一文多發平臺 OpenWrite 發布!
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/253357.html
標籤:其他
下一篇:Linux awk命令詳解
