如何使用bash shell實現連個檔案的內容對比

時間 2021-08-11 18:10:18

1樓:匿名使用者

1>diff命令的功能

linux中diff命令的功能為逐行比較兩個文字檔案,列出其不同之處。它對給出的檔案進行系統的檢查,並顯示出兩個檔案中所有不同的行,不要求事先對檔案進行排序。

2>語法

diff [options] file1 file2

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

3>[options]主要引數

-a:將所有檔案當作文字檔案來處理。

-b或–ignore-space-change 忽略空格造成的不同。

-b或–ignore-blank-lines 忽略空行造成的不同。

-c:使用綱要輸出格式。

-h:利用試探法加速對大檔案的搜尋。

-i:忽略大小寫的變化。

-n –rcs:輸出rcs格式。

-n或–new-file 在比較目錄時,若檔案a僅出現在某個目錄中,會顯示:only in目錄;檔案a若使用-n引數,則diff會將檔案a與一個空白的檔案比較。

-r或–recursive 比較子目錄中的檔案。

-u,-u《列數》或–unified=《列數》 以合併的方式來顯示檔案內容的不同。

4>使用方法的例項說明

例如: 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會產生很多資訊。

5>diff最常用的功能

diff有很多功能平時我們不常用到,最常用的功能莫過於生成patch檔案了:

diff -urn old/ new/ > mysoft.patch

引數 -u 表示使用 unified 格式,-r 表示比較目錄,-n 表示將不存在的檔案當作空檔案處理,這樣新新增的檔案也會出現在patch檔案中。

然後在需要應用patch的地方使用下述命令即可:

patch -p0 < mysoft.patch

diff的 -y 命令(長格式為 –side-by-side)可以將螢幕分成左右兩部分,來比較兩個檔案之間的差異。許多圖形化的比較工具都有這個功能,但如果只能使用命令列,這個引數就相當有用了。如果要改變左右各部分的寬度,可以通過 -w (–width)引數來指定。

–ignore-blank-lines 引數可以不檢查空白行。這樣dos格式和unix格式的檔案互相比較時,就不至於因為換行符不一致而出現大量的差異。

2樓:匿名使用者

diff file1 file2 即可實現比較兩個檔案的不同之處!

3樓:吳胡胡

用diff 是比較方便的但是 輸出不是很容易看懂 你也可以用pspad 或者用file diff 之類的小工具, 不過這些工具只能在windows 下用

shell/bash 兩個變數的提取和判斷,即:實現兩個條件同時存在

4樓:

awk -v rs="" '/1234/&&!/qwer/' file.txt

你的這個例子,由於出現了qwer,所以輸出為空。

rs(記錄分隔符)預設為換行符,但這裡將所有檔案內容作為一條記錄來整體看待,以便判斷是否含有要求的內容,所以清除了記錄分隔符。

5樓:匿名使用者

#!/bin/bash

one=`grep 1234 test.txt`two=`grep qwer test.txt`if [ ! -z $one ] && [ -z $two ] ;

then

echo "期望的輸出資訊"fi

shell指令碼怎樣讀取檔案的值,並賦值給變數

6樓:四舍**入

在sell指令碼中,讀取鍵盤輸入的內容並將其賦值給shell變數的命令為:

read -p "input a val:" val echo $val

read - 從標準輸入讀取數值。這個 read 內部命令被用來從標準輸入讀取單行資料。這個命令可以用來讀取鍵盤輸入,當使用 重定向的時候,讀取檔案中的一行資料。

它的語法形式一般是:

read [-options] [variable...]

7樓:小米飛貓

#!/bin/bash

#使用方法:./script.sh filenamea=$(sed -n '$p' $1 | awk -f"," '')b=$(sed -n '1!

p;n;$q;d' $1 | awk -f"," '')

echo $a

echo $b

手機使用mhl同時使用otg功能如何實現

雪靈冰魂龍寒月 你的手機不支援無線顯示哪 次爾雲 手機版本需要4.4以上,連線otg線就可以了 手機怎樣才能實現mhl和otg功能同時使用?感謝! 不可以的,因為手機受限於體積和功耗,藉口不豐富,mhl和otg使用同一針腳,使用擴充套件插口也無法實現。希望能幫到你 如何讓手機支援mhl和otg 對使...

使用ivew元件,如何對table元件實現每行可以配置(字型顏色 大小,每行的背景顏色,固定表頭等)

table為 標籤,在table標籤中可以設定簡單的字型傾斜 加粗等內容。2.詳細設定字型顏色及大小的話這個要靠css樣式表來規定字型大小及顏色樣式。3.對於 中的部分可以參考css層疊樣式表來調整文字大小和內容及文字所選用的字型。介紹 超文字標記語言,標準通用標記語言下的乙個應用。超文字標記語言的...

求如何使用EXCEL的函式實現數字的不重複排列與組合,用VBA也行

柳上寒煙 不大明白你的意思 按你的意思感覺就是把a列當成百位,b列當成十位,c列當成個位的排列組合,例 138 139 135.148 149 145.338 339 335.如果這樣只要a b c列上的數字不重複,就不會有重複將a列所有的數字全部排進 百位數 所有列裡將b列所有的數字全部排進 十位...