我一直在尝试从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
它不起作用。
答案 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