背景
我們提供的服務(wù)有:網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、鎮(zhèn)遠(yuǎn)ssl等。為近千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的鎮(zhèn)遠(yuǎn)網(wǎng)站制作公司
在Linux系統(tǒng)環(huán)境的工作過程中,經(jīng)常遇到需要對比文件差異的情況,此時,使用Linux提供的diff工具可以方便的發(fā)現(xiàn)文件不同版本之間差異,從而快速排除解決問題。
Windows端有強(qiáng)大文件對比工具BeyondCompare。
patch 命令可以將diff命令的輸出應(yīng)用到原始的對比文件中,將新版本的更新應(yīng)用到原始的文件中。
命令
diff [option] [file1] [file2]
patch [option] [file1] [file_differ]
測試環(huán)境
WSL: Linux PERSONALPC 4.4.0-19041-Microsoft #488-Microsoft Mon Sep 01 13:43:00 PST 2020 x86_64 x86_64 x86_64 GNU/Linux
測試過程
如果你想比較兩個文件前 20 行的內(nèi)容,可以使用 Linux 命令 head。例如,如果你要比較文件 file1 和 file2 的前 20 行,可以使用以下命令:
head -n 20 file1 file2
如果你只想查看文件的前 20 行而不進(jìn)行比較,可以使用以下命令:
head -n 20 file1
該命令的功能為逐行比較兩個文本文件,列出其不同之處。它比comm命令完成更復(fù)雜的檢查。它對給出的文件進(jìn)行系統(tǒng)的檢查,并顯示出兩個文件中所有不同的行,不要求事先對文件進(jìn)行排序。
語法:diff [選項(xiàng)] file1 file2
說明:該命令告訴用戶,為了使兩個文件file1和file2一致,需要修改它們的哪些行。如果用“- ”表示file1或fiie2,則表示標(biāo)準(zhǔn)輸入。如果file1或file2是目錄,那么diff將使用該目錄中的同名文件進(jìn)行比較。
例如: diff /usr/xu mine
把目錄/usr/xu 中名為mine的文件與當(dāng)前目錄中的mine文件進(jìn)行比較。
通常輸出由下述形式的行組成:
n1 a n3,n4
n1,n2 d n3
n1,n2 c n3,n4 這些行類似ed命令把filel轉(zhuǎn)換成file2。字母(a、d和c)之前的行號(n1,n2)是針對file1的,其后面的行號(n3,n4)是針對file2的。字母a、d和c分別表示附加、刪除和修改操作。
在上述形式的每一行的后面跟隨受到影響的若干行,以“”打頭的行屬于第一個文件,以“”打頭的行屬于第二個文件。
diff能區(qū)別塊和字符設(shè)備文件以及FIFO(管道文件),不會把它們與普通文件進(jìn)行比較。
如果file1和file2都是目錄,則diff會產(chǎn)生很多信息。
如果一個目錄中只有一個文件,則產(chǎn)生一條信息,指出該目錄路徑名和其中的文件名。
diff各選項(xiàng)的含義如下:
- b 忽略行尾的空格,而字符串中的一個或多個空格符都視為相等。
如How are you與How are you被視為相同的字符串。
- c 采用上下文輸出格式(提供三行上下文)。
- C n 采用上下文輸出格式(提供n行上下文)。
- e 產(chǎn)生一個合法的ed腳本作為輸出。
- r 當(dāng)file1和file2是目錄時,遞歸作用到各文件和目錄上。
例如,文件ml.c的內(nèi)容為(左邊行號是有意加上的,以便前后對照):
1 main( )
{
printf(“Hello!\n”);
}
5 文件m2.c的內(nèi)容為:
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行后,兩個文件相同。
如果想對兩個有序的文件進(jìn)行比較,可以使用comm命令。
語法:comm [- 123 ] file1 file2
說明:該命令是對兩個已經(jīng)排好序的文件進(jìn)行比較。其中file1和file2是已排序的文件。comm讀取這兩個文件,然后生成三列輸出:僅在file1中出現(xiàn)的行;僅在file2中出現(xiàn)的行;在兩個文件中都存在的行。如果文件名用“- ”,則表示從標(biāo)準(zhǔn)輸入讀取。
comm -1 不顯示只出現(xiàn)在第一個文件的行。
comm -2 不顯示只出現(xiàn)在第二個文件的行。
comm -3 不顯示同時出現(xiàn)在兩個文件的行。
comm file1 file2 顯示三列,第一列代表只出現(xiàn)在file1的行,第二列代表只出現(xiàn)在file2的行,第三列代表倆個文件同時出現(xiàn)的行
comm -12 顯示兩個文件同時出現(xiàn)的行 也就是交集
comm -13 顯示只出現(xiàn)在第二個文件的行
comm -23 顯示只出現(xiàn)在第一個文件的行
例如:假設(shè)要對文件myfile1和myfile2進(jìn)行比較
$ 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 stdio.h
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中共有的行。
網(wǎng)站標(biāo)題:linux文件行對比命令 linux 對比文件
分享路徑:http://www.muchs.cn/article28/dohsocp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、、自適應(yīng)網(wǎng)站、網(wǎng)站設(shè)計(jì)公司、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)