『壹』 用shell腳本實現兩個文件比較
[root@localhostxly]#lla.txtb.txt
-rw-r--r--1rootroot28Jul1315:00a.txt
-rw-r--r--1rootroot30Jul1315:00b.txt
[root@localhostxly]#cata.txt
hello
123
thisisa.txt
456
[root@localhostxly]#catb.txt
hello!
123
thisisb.txt
4567
[root@localhostxly]#diffa.txtb.txt
1c1
<hello
---
>hello!
3,4c3,4
<thisisa.txt
<456
---
>thisisb.txt
>4567
1c1就是指2個文件第一行不一樣
<指的是a.txt
>指的是b.txt
『貳』 用shell腳本編寫一個函數,調用兩個數據文件的逐行數據(每一行有兩個數據)作為變數來計算,怎麼編寫
function fname(){
...
}
while read line
do
num1=`echo $line | awk '{print $1}'`
num2=`echo $line | awk '{print $2}'`
fname $num1 $num2
done < $file
『叄』 shell腳本,一行一行比較兩個文本文件。 shell腳本,對一行一行讀取文本文件得到的那一行數據進行字元串
沒明白你的意思,就寫了一個判斷兩個文件對應行是不是相同。在線的話就追問我。
line=`cat file1|wc -l`
for ((i=1;i<=$line;i++));do
file1=`awk 'NR="'$i'"{print $0}'` file1
file2=`awk 'NR="'$i'"{print $0}'` file2
if [ $file1 == $file2 ];then
echo line $i looks same!
else
echo line $i looks different!
fi
done
『肆』 shell如何同時讀取兩個序列文件進行比對
首先要讓原始文件中的重復行只出現一次並將結果保存到兩個新文件(uniq1和uniq2)中。
再逐行讀取兩個新文件內容並使用for循環嵌套,遍歷進行欄位比較,將兩個新文件相同內容輸出到thesame文件,再在兩個新文件中使用sed命令將換行的空格替換成 |,進一步反向過濾掉thesame文件內容就分別得到了兩文件的獨有內容。由於thesame文件使用了追加的方式,如果第二次執行腳本就會將新的內容追加到第一次執行內容之後,而不能單獨得出第二次比對的結果,所以在開頭設定如果之前有腳本運行產生的thesame文件存在,那麼就刪掉該文件重新建立新的文件,這樣第二次文本對比的結果就不會受第一次的影響。