如何使用awk从一个csv中删除行,一列中的某些值与另一个csv列相匹配?

时间:2013-04-19 05:16:08

标签: csv awk

我一直在尝试从csv中删除行(记录),其中特定列中的条目与其他csv中的条目匹配。

csv结构大致如下:

1.csv

Col1,Col2,Col3,Col4,Col5
sasdf,3432,fjkdk,fjjof,1234
efvr,4565,fhjs,dihi,9999
asa,234,rgs,fkjf,0102
aaa,456,jfvv,dofh,4565
ths,7865,fhjf,fhks,3212

2.csv

Col1    
1234
3212    
0102
4565

正如您所看到的,1.csv的col5中有一些值出现在2.csv的col1中 我想使用awk删除1.csv中与2.csv

的col1匹配的行(记录)

所以输出看起来像这样:

3.csv

Col1,Col2,Col3,Col4,Col5
efvr,4565,fhjs,dihi,9999

这是我使用的awk脚本:

awk -F"," 'NR==FNR{array1[FNR]=$1};NR>FNR{array1[FNR]!~$5}' 2.csv 1.csv > 3.csv

它不起作用。

1 个答案:

答案 0 :(得分:1)

这样可以解决问题:

$ awk -F, 'NR==FNR{a[$1];next}!($5 in a)' 2.csv 1.csv
Col1,Col2,Col3,Col4,Col5
efvr,4565,fhjs,dihi,9999

$ awk -F, 'NR==FNR{a[$1];next}!($5 in a)' 2.csv 1.csv > 3.csv