如何通过Linux命令行按键来比较两个csv文件中的列?

时间:2015-11-02 16:00:04

标签: csv awk diff cut

我有两个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 / cut / awk)得到这样的结果。

6,kkk,lll

第一行有所不同,但我想在第一行忽略这种差异。

1 个答案:

答案 0 :(得分:0)

正如问题所述,您只想逐行比较两个文件。 comm可能是个不错的选择:

comm -3 hogehoge.csv hogehoge2.csv

如果你想忽略每个文件的第一行:

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

将准确打印您指定的输出。注意:comm -3将打印每个文件中不同的行,第二个文件中不同行的列表将使用制表符缩进。要删除标签:

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