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

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

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

bash shell如何獲取到命令執行結果的值

將一條命令的執行結果取得命令執行結果的值有 1 使用反引號 數字鍵1左邊的鍵,tab鍵上面,英文方式輸入 如 a echo hello world 即將命令 echo hello world 的輸出賦給變數a 2 可以使用 如 a echo hello world 即將命令echo hello wo...

如何使用excel函式實現高階篩選

通過增加輔助列來實現多條件選擇的篩選。例如有 如圖 要求篩選出9月1日到5日之間,王五賣帽子的清單。第一步 在e2輸入公式 and a2 date 2015,9,1 a2第二步 對輔助列進行篩選,條件為true,篩選結果如圖 月大蝦 你的名字資料在a3 a14.你在c3輸入以下公式,ctrl shi...

如何用ps無縫拼圖,如何使用ps實現兩張圖片無縫連線?

ps cs3 cs5 都可以 做起來容易 說起來難呀 有很多步驟 告訴你個最簡單的 把笫二張 壓在第一張的上面一點 然後用仿製圖章工具 從逢那裡走一下就行了 也可以用修補工具 橡皮擦工具 都可以 希望能幫到你 藍藍藍 1 首先開啟ps軟體,然後在ps中新建一個空白畫布。2 接下來將需要的第一張 拖入...