2009-12-17 101 views
0

現在我的程序生成兩個數據文件。 A.TXT和b.txt 以A.TXT爲例,它的內容就像這樣:用於比較兩個文件之間差異的shell腳本問題。 [Linux]

0,0 
0,1 
1,0 
-3,1 
1,-2 
1,3 
...... 

b.txt是A.TXT相似。

現在,我希望找出差異線數。 換句話說,例如,如果b.txt這樣的:

0,0 
1,1 
1,2 
-3,1 
1,-2 
1,3 
...... 

外殼腳本輸出2作爲第二和第三線是與一個不同數目不同。這個怎麼做???

我試試diff命令,但是,我不能得到我想要的東西......

需要你的善良help..Thanks。

此外: 每個文件約有10,000 - 100,000行。當然,他們有相同的號碼。每次都是行。

回答

4
diff a.txt b.txt | grep "<" | wc -l 
+0

謝謝我忘了統計「---」的數字,謝謝伊萬。 – MaiTiano 2009-12-17 13:41:32

+0

歡迎!其實,我認爲你需要「<」而不是「---」。我在答案中做了一個更正。 – 2009-12-17 13:43:11

1

diff似乎正是你想要的。

#> diff a.txt b.txt 
2,3c2,3 
< 0,1 
< 1,0 
--- 
> 1,1 
> 1,2 

有什麼更具體的,你正在尋找?

+0

感謝您的熱心幫助。 – MaiTiano 2009-12-17 13:42:20

+0

當我輸入正如你所說的,我得到了這個消息, grep:無法識別的選項'---', – MaiTiano 2009-12-17 13:46:17

1

差異可能會移動一個文件內的塊,這不是你想要的,我認爲。 這裏有一個選擇:

join -t'\0' -v2 <(cat -n a.txt) <(cat -n b.txt) | wc -l 
3

面臨着同樣的問題而回。你需要的是diffstat。 Diffstat是GNU DIFF包的一部分,並且可以總結差異結果:

概要

diffstat讀取diff的輸出,和 顯示 插入,缺失,和 修改的直方圖per-文件。審查大型複雜補丁文件 是有用的。

您也可以處理diffstat的輸出得到彙總結果:

差異-u FileA.txt FileB.txt | diffstat -f0 | grep -v文件| awk'{print $ 3}'

-u是強制性的。您可以瀏覽diffstat文檔以獲取選項。

相關問題