linux双小于命令,Linux文本比较命令:diff
diff 命令是 Linux上非常重要的工具,用于比較文件的內(nèi)容,特別是比較兩個(gè)版本不同的文件以找到改動(dòng)的地方。diff在命令行中打印每一個(gè)行的改動(dòng)。最新版本的diff還支持二進(jìn)制文件。diff程序的輸出被稱為補(bǔ)丁 (patch),因?yàn)長(zhǎng)inux系統(tǒng)中還有一個(gè)patch程序,可以根據(jù)diff的輸出將a.c的文件內(nèi)容更新為b.c。diff是svn、cvs、git等版本控制工具不可或缺的一部分。
命令格式:
diff [參數(shù)][變動(dòng)前的文件1或目錄1][變動(dòng)后的文件2或目錄2]
命令功能:
diff命令能比較單個(gè)文件或者目錄內(nèi)容。如果指定比較的是文件,則只有當(dāng)輸入為文本文件時(shí)才有效。以逐行的方式,比較文本文件的異同處。如果指定比較的是目錄的的時(shí)候,diff 命令會(huì)比較兩個(gè)目錄下名字相同的文本文件。列出不同的二進(jìn)制文件、公共子目錄和只在一個(gè)目錄出現(xiàn)的文件。
命令參數(shù):
-y或--side-by-side 以并列的方式顯示文件的異同之處。
-W或--width 在使用-y參數(shù)時(shí),指定欄寬。
-c 顯示全部?jī)?nèi)文,并標(biāo)出不同之處。
-u,-U或--unified= 以合并的方式來(lái)顯示文件內(nèi)容的不同。
-r或--recursive 比較子目錄中的文件。
-N或--new-file 在比較目錄時(shí),若文件A僅出現(xiàn)在某個(gè)目錄中,預(yù)設(shè)會(huì)顯示:Only in目錄:文件A若使用-N參數(shù),則diff會(huì)將文件A與一個(gè)空白的文件比較。
-b或--ignore-space-change 不檢查空格字符的不同
-B或--ignore-blank-lines 不檢查空白行。
-H或--speed-large-files 比較大文件時(shí),可加快速度。
-l或--ignore-matching-lines 若兩個(gè)文件在某幾行有所不同,而這幾行同時(shí)都包含了選項(xiàng)中指定的字符或字符串,則不顯示這兩個(gè)文件的差異。
-i或--ignore-case 不檢查大小寫的不同。
-q或--brief 僅顯示有無(wú)差異,不顯示詳細(xì)的信息。
-r或--recursive 比較子目錄中的文件。
-s或--report-identical-files 若沒(méi)有發(fā)現(xiàn)任何差異,仍然顯示信息。
-S或--starting-file 在比較目錄時(shí),從指定的文件開(kāi)始比較
-t或--expand-tabs 在輸出時(shí),將tab字符展開(kāi)。
-T或--initial-tab 在每行前面加上tab字符以便對(duì)齊。
-w或--ignore-all-space 忽略全部的空格字符。
-v或--version 顯示版本信息。
實(shí)例
[root@linuxidc src]# cat a.txt
111
aaa
AAA
111aaa
aaa
AAA
111
[root@linuxidc src]# cat b.txt
111
aaa
AAA
111AAA
aaa
AAA
111
[root@linuxidc src]#
正常格式的diff如下
1 [root@linuxidc src]# diff a.txt b.txt
4c4
< 111aaa
---
> 111AAA
[root@linuxidc src]#
diff結(jié)果第一行“4c4”是一個(gè)提示,用來(lái)說(shuō)明變動(dòng)位置,前面的"4",表示f1的第4行有變化;中間的"c"表示變動(dòng)的模式是內(nèi)容改變(change),其他模式還有"增加"(a,代表addition)和"刪除"(d,代表deletion);后面的"4",表示變動(dòng)后變成f2的第4行。
第二行“< 111aaa”,前面的小于號(hào),表示要從f1當(dāng)中去除該行(也就是第4行),后面的"111aaa"表示該行的內(nèi)容。
第三行“---”用來(lái)分割f1和f2。
第四行“> 111AAA”,類似于第二行。前面的大于號(hào)表示f2增加了該行,后面的"111AAA"表示該行的內(nèi)容。
上下文格式的diff如下
[root@linuxidc src]# diff -c a.txt b.txt
*** a.txt 2015-11-08 18:21:50.455124628 +0800
--- b.txt 2015-11-08 18:21:53.391173006 +0800
***************
*** 1,7 ****
111
aaa
AAA
! 111aaa
aaa
AAA
111
--- 1,7 ----
111
aaa
AAA
! 111AAA
aaa
AAA
111
[root@linuxidc src]#
第一部分顯示兩個(gè)文件的基本情況:文件名和時(shí)間信息,"***"表示變動(dòng)前的文件,"---"表示變動(dòng)后的文件。
第二部分#15個(gè)星號(hào),將文件的基本情況與變動(dòng)內(nèi)容分割開(kāi)。
第三部分顯示變動(dòng)前的文件,即f1。這時(shí)不僅顯示發(fā)生變化的第4行,還顯示第4行的前面三行和后面三行,因此一共顯示7行。所以,前面的"*** 1,7 ****"就表示,從第1行開(kāi)始連續(xù)7行。另外,文件內(nèi)容的每一行最前面,還有一個(gè)標(biāo)記位。如果為空,表示該行無(wú)變化;如果是感嘆號(hào)(!),表示該行有改動(dòng);如果是減號(hào)(-),表示該行被刪除;如果是加號(hào)(+),表示該行為新增。
四部分顯示變動(dòng)后的文件,即f2。
合并格式的diff
[root@linuxidc src]# diff -u a.txt b.txt
--- a.txt 2015-11-08 18:21:50.455124628 +0800
+++ b.txt 2015-11-08 18:21:53.391173006 +0800
@@ -1,7 +1,7 @@
111
aaa
AAA
-111aaa
+111AAA
aaa
AAA
111
[root@linuxidc src]#
第一部分,也是文件的基本信息。"---"表示變動(dòng)前的文件,"+++"表示變動(dòng)后的文件。
第二部分,變動(dòng)的位置用兩個(gè)@作為起首和結(jié)束。前面的"-1,7"分成三個(gè)部分:減號(hào)表示第一個(gè)文件(即f1),"1"表示第1行,"7"表示連續(xù)7行。合在一起,就表示下面是第一個(gè)文件從第1行開(kāi)始的連續(xù)7行。同樣的,"+1,7"表示變動(dòng)后,成為第二個(gè)文件從第1行開(kāi)始的連續(xù)7行。
第三部分是變動(dòng)的具體內(nèi)容。除了有變動(dòng)的那些行以外,也是上下文各顯示3行。它將兩個(gè)文件的上下文,合并顯示在一起,所以叫做"合并格式"。每一行最前面的標(biāo)志位,空表示無(wú)變動(dòng),減號(hào)表示第一個(gè)文件刪除的行,加號(hào)表示第二個(gè)文件新增的行。
并排格式輸出
[root@linuxidc src]# diff -y -W 50 a.txt b.txt
111? ? ? ? 111
aaa? ? ? ? aaa
AAA? ? ? ? AAA
111aaa? ? ? ? ? ? |? 111AAA
aaa? ? ? ? aaa
AAA? ? ? ? AAA
111? ? ? ? 111
[root@linuxidc src]#
“|”表示前后2個(gè)文件內(nèi)容有不同
“
“>”表示后面文件比前面文件多了1行內(nèi)容
總結(jié)
以上是生活随笔為你收集整理的linux双小于命令,Linux文本比较命令:diff的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Oracle数据库进程杀不掉,求助ora
- 下一篇: window的文件能在linux,在Li