2015-11-02 86 views
0

我有兩個CSV文件:如何通過Linux命令行按鍵比較兩個csv文件的列?

hogehoge.csv

1,aaa,bbb 
2,ccc,ddd 
3,eee,fff 
4,ggg,hhh 
5,iii,jjj 
6,kkk,lll 
7,mmm,nnn 
8,ooo,ppp 
9,qqq,rrr 
10,sss,ttt 

hogehoge2.csv

1,aaa,bb 
2,ccc,ddd 
3,eee,fff 
4,ggg,hhh 
5,iii,jjj 
7,mmm,nnn 
8,ooo,ppp 
9,qqq,rrr 
10,sss,ttt 

我想通過命令行(DIFF /剪切/ AWK)得到的結果是這樣。

6,kkk,lll 

第一行有差異,但我想忽略第一行的差異。

+0

這已被問了很多次。你到目前爲止嘗試了什麼? – fedorqui

+0

DIFF hogehoge.csv hogehoge2.csv AWK -F 「」 'NR == FNR {C [$ 1] ++;}旁邊; C [$ 1] == 0' hogehoge.csv hogehoge2.csv 它們是不收集。 – shigemk2

回答

0

正如問題所述,您只需要逐行比較兩個文件。如果你想忽略的每個文件的第一行

comm -3 hogehoge.csv hogehoge2.csv 

comm -3 <(tail -n +2 hogehoge.csv) <(tail -n +2 hogehoge2.csv) 

,它將打印正是你所指定的輸出comm可能是一個不錯的選擇。注意:comm -3將打印每個文件中不同的行,第二個文件中不同行的列表將使用製表符縮進。刪除標籤:

comm -3 <(tail -n +2 hogehoge.csv) <(tail -n +2 hogehoge2.csv) | sed $'s/\t*//' 
+0

非常感謝。 – shigemk2