我有两个csv(A有30万行,B有1 000 000行).记录通过列ID(关系1-1)相关,但具有不同的列顺序且不按ID排序.我需要获得在A中缺少ID的70万行B.
A.csv
A.ID,A.Field01,A.Field02 2,a,d 4,b,e 1,c,f
B.csv
B.Field01,B.ID,B.Field02 g,2,f f,4,r h,6,k a,1,3
(我想选择h,6,k)
我想我可以用像sqlite这样的sgbd来解决它,但我确信它可以用更简单,更高效的东西来完成,就像awk一样.
我想调整我发现的这个命令:
awk 'ARGIND==1 {x[$0]++; next} !x[$0]' B.csv A.csv
然而,这比较了整行,我不知道如何选择具体的A.ID和B.ID作为要比较的字段.
我也对任何其他有效的解决方法感兴趣!
干杯
$ awk -F"," 'FNR==NR{a[$1];next}!($2 in a)' a b B.Field01,B.ID,B.Field02 h,6,k