1

我一直在尝试从 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

那没起效。

4

1 回答 1

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
于 2013-04-19T08:28:30.170 回答