有效地比较两个csv与+300000记录(用awk?)

Meg*_*ini 1 csv awk

我有两个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          
Run Code Online (Sandbox Code Playgroud)

B.csv

B.Field01,B.ID,B.Field02 
g,2,f
f,4,r
h,6,k
a,1,3
Run Code Online (Sandbox Code Playgroud)

(我想选择h,6,k)

我想我可以用像sqlite这样的sgbd来解决它,但我确信它可以用更简单,更高效的东西来完成,就像awk一样.

我想调整我发现的这个命令:

awk 'ARGIND==1 {x[$0]++; next} !x[$0]' B.csv A.csv
Run Code Online (Sandbox Code Playgroud)

然而,这比较了整行,我不知道如何选择具体的A.ID和B.ID作为要比较的字段.

我也对任何其他有效的解决方法感兴趣!

干杯

Jam*_*own 5

$ awk -F","  'FNR==NR{a[$1];next}!($2 in a)' a b
B.Field01,B.ID,B.Field02 
h,6,k
Run Code Online (Sandbox Code Playgroud)