[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 系統管理 > 其它 > 正文
文件比較命令:comm和diff
不詳 (2001-05-08 14:26:08)
Comm命令 

如果想對兩個有序的文件進行比較,可以使用comm命令。 

語法:comm [- 123 ] file1 file2 

說明:該命令是對兩個已經排好序的文件進行比較。其中file1和file2是已排序的文件。comm讀取這兩個文件,然生成三列輸出:僅在file1中出現的行;僅在file2中出現的行;在兩個文件中都存在的行。如果文件名用“- ”,則表示從標準輸入讀取。 

選項1、2或3抑制相應的列顯示。例如comm - 12就只顯示在兩個文件中都存在的行;comm - 23只顯示在第一個文件中出現而未在第二個文件中出現的行;comm - 123則什也不顯示。 

例如:假設要對文件myfile1和myfile2進行比較 

$ cat myfile1 

main( ) 



float a,b, i, j ,z ; 

a=i=10 ; b=j=5 ; 

z= i + j ; 

printf(“z=%d\\\\n”,z) ; 



$ cat myfile2 

#include 

main( ) 



float i, j ,z ; 

i=10 ; j=5 ; 

z= i + j ; 

printf(“z=%f\\\\n”,z) ; 



$ comm - 12 myfile1 myfile2 

main( ) 



z= i + j ; 



就只顯示文件myfile1和myfile2中共有的行。 


----------------------------------------------------
Diff命令 

該命令的功能為逐行比較兩個文本文件,列出其不同之處。它比comm命令完成更復雜的檢查。它對給出的文件進行系統的檢查,並顯示出兩個文件中所有不同的行,不要求事先對文件進行排序。 

語法:diff [選項] file1 file2 

說明:該命令告訴用戶,為了使兩個文件file1和file2一致,需要修改它們的哪些行。如果用“- ”表示file1或fiie2,則表示標準輸入。如果file1或file2是目錄,那diff將使用該目錄中的同名文件進行比較。例如: 

diff /usr/xu mine 

把目錄/usr/xu 中名為mine的文件與當前目錄中的mine文件進行比較。 

通常輸出由下述形式的行組成: 

n1 a n3,n4 

n1,n2 d n3 

n1,n2 c n3,n4 

這些行類似ed命令把filel轉換成file2。字母(a、d和c)之前的行號(n1,n2)是針對file1的,其面的行號(n3,n4)是針對file2的。字母a、d和c分別表示附加、刪除和修改操作。 

在上述形式的每一行的面跟隨受到影響的若幹行,以“<”打頭的行屬第一個文件,以“>”打頭的行屬第二個文件。 

diff能區別塊和字符設備文件以及FIFO(管道文件),不會把它們與普通文件進行比較。 

如果file1和file2都是目錄,則diff會產生很多信息。如果一個目錄中只有一個文件,則產生一條信息,指出該目錄路徑名和其中的文件名。 

diff各選項的含義如下: 

- b 忽略行尾的空格,而字符串中的一個或多個空格符都視為相等。如How are you與How are you被視為相同的字符串。 

- c 採用上下文輸出格式(提供三行上下文)。 

- C n 採用上下文輸出格式(提供n行上下文)。 

- e 產生一個合法的ed腳本作為輸出。 

- r 當file1和file2是目錄時,遞歸作用到各文件和目錄上。 

例如,文件ml.c的內容為(左邊行號是有意加上的,以便前對照): 

1 main( ) 



printf(“Hello!\n”); 





文件m2.c的內容為: 

1 main() 

2 { 

3 int n , m ; 

4 n= 10 ; 

5 printf ( “ % d \\\\ n ” , m = n * 10); 

6 } 

輸入命令: 

$ diff m1.c m2.c 

屏幕上顯示: 

3,5 c 3,6 

printf(“Hello!\n”); 



<5 

>3 int n,m; 

>4 n=10 ; 

>5 printf ( “ % d \\\\ n ” , m = n * 10); 

>6 } 

 表示把文件m1.c的3至5行改成m2.c的3至6行,兩個文件相同。
(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
 

★  樊強制作 歡迎分享  ★