从参考文件插入值

从参考文件插入值

我有一个包含数千行的每日 csv 文件。
我被要求连接两列,然后当给定列中的值与另一个文件中的表匹配时插入新列。预计会出现空值。

简化数据(第 3 列已连接):

每日.csv

HVDS,1810,HVDS_1810,"match value",xxxxx
HVRS,5230,HVRS_5230,"match value",xxxxx
WPHV,0,WPHV_0000,"no match",xxxxx

参考文件有两列,搜索$1并在上面插入$2

参考.csv

HVDS_1810,dfTVfsd
HVRS_5230,UtsfeOO
WPHV_4242,BBnnstd

只需要一些关于从哪里开始的想法。

答案1

如果我理解正确,您的问题“不匹配”应替换为 中的值ref.csv。一个可能的解决方案是awk

awk -F',' 'BEGIN { OFS = "," } FNR==NR { m[$1] = $2; next; } { if ($3 in m) { $4 = "\"" m[$3] "\""; } else { $4 = "\"" "\""; } print; }' ref.csv daily.csv

说明:
FNR==NR读取第一个文件时为 true。
我们创建m具有索引第一列和值第三列的数组。
然后在第二个块中,我们读取第二个文件(因为next第一个块中的指令),检查第 3 列是否是数组的索引m,如果是,则设置新的列值。如果不是,我们设置空值。

相关内容