UNIX系統下diff的三種格式

2021-08-19 02:33:31 字數 2646 閱讀 3011

unix系統下diff的三種格式

diff命令是unix系統中常用的乙個命令,其功能是比較兩個文字檔案之間的差異。

目前diff的輸出有三種格式,分別是:正常格式(normal diff)上下文格式(context diff)合併格式(unified diff)

1、正常格式

命令格式 :

diff 《更改之前的檔名》 《更改之後的檔名》

舉例:

建立兩個檔案 file1.txt 和 file2.txt,內容分別如下:

what is your name?

my name is lilei.

what is your name?

my name is hanmeimei.

使用diff命令比價兩個檔案的不同:

diff file1.txt file2.txt

結果如下:

注釋:

第一行:2c2   前乙個2表示file1.txt的第2行有變動,c表示變動的模式 更改(change),此外變動模式還有 a 增加(addition),d 刪除(deletion)

第二行: < my name is lilei.   

第三行: ---   用來分割file1.txt 和file2.txt

第四行:  > my name is hanmeimei.    > 表示新增到file2.txt檔案中,後面是新增的內容。

2、上下文格式

命令格式

diff -c 《更改之前的檔名》 《更改之後的檔名》

舉例:

diff -c file1.txt file2.txt

結果如下:

注釋:

第一行: *** file1.txt    2018-04-20 10:08:51.338188679 +0800

第二行:--- file2.txt    2018-04-20 10:09:41.387461602 +0800

以上兩行顯示兩個檔案的基本資訊,檔名和時間,其中「***」表示更改之前的檔案,「---」表示更改之後的檔案

第三行: ***************   此行是乙個分割線

第四行: *** 1,2 ****

第五行:   what is your name?

第六行: ! my name is lilei.

以上三行表示file1.txt檔案有兩行內容,從1-2,內容如第

五、六行顯示。

檔案內容的每行前邊會有乙個識別符號,空表示無改動,!表示有改動,- 表示被刪除,+表示被增加

第七行: --- 1,2 ----

第八行:   what is your name?

第九行: ! my name is hanmeimei.

以上三行表示的含義同上,針對file2.txt檔案

3、合併格式

命令格式

diff -u 《更改之前的檔名》 《更改之後的檔名》

舉例:

diff -u file1.txt file2.txt

結果如下:

注釋:

第一行: --- file1.txt    2018-04-20 10:08:51.338188679 +0800

第二行: +++ file2.txt    2018-04-20 10:09:41.387461602 +0800

以上兩行顯示兩個檔案的基本資訊,檔名和時間,其中「---」表示更改之前的檔案,「+++」表示更改之後的檔案

第三行: @@ -1,2 +1,2 @@

第四行:  what is your name?

第五行:-my name is lilei.

第六行: +my name is hanmeimei.

以上四行其實和上下文格式顯示的內容是差不多的,只不過是將單獨顯示的檔案內容合併到一起顯示,這樣更簡單。對於兩個檔案相同的內容只顯示一遍,而不同的內容分別顯示。

-1,2 表示file1.txt有兩行內容, +1,2表示file2.txt有兩行內容  

顯示的內容部分,每行前邊也有乙個識別符號,空表示無變動,-表示刪除,+表示增加

補充:git命令中的diff採用的格式就是unix的合併格式

Linux 下系統呼叫的三種方法

系統呼叫 system call 是作業系統為在使用者態執行的程序與硬體裝置 如cpu 磁碟 印表機等 進行互動提供的一組介面。當使用者程序需要發生系統呼叫時,cpu 通過軟中斷切換到核心態開始執行核心系統呼叫函式。下面介紹linux 下三種發生系統呼叫的方法 舉例來說,我們通過 glibc 提供的...

系統呼叫的三種方式

系統呼叫 system call 是作業系統為在使用者態執行的程序與硬體裝置 如cpu 磁碟 印表機等 進行互動提供的一組介面。當使用者程序需要發生系統呼叫時,cpu 通過軟中斷切換到核心態開始執行核心系統呼叫函式。下面介紹linux 下三種發生系統呼叫的方法 一 通過 glibc 提供的庫函式 舉...

三種Dataase Mapping的系統架構

處理方法 在乙個獨立的package中,為finder方法定義乙個介面,然後在資料對映層實現這個介面。邏輯層通過介面呼叫finder方法,後者通過資料對映層載入資料。原因 之所以使用介面的原因,在於使finder方法標準化,這樣應用邏輯層雖然可能在任何地方都會呼叫finder方法取得帶有資料的bus...