【发布时间】:2021-08-09 11:17:54
【问题描述】:
我有两个文件需要比较并映射一个多行匹配的值。
我的映射文件 (map.csv) 如下所示:
id,name
123,Hans
123,Britta
232,Peter
343,Siggi
343,Horst
数据文件(data.csv)是
contact,id,names
m@a.de,123,
ad@23.com,343,
adf@er.org,123,
af@go.er,232,
llk@fh.com,343,
ad@wer.org,789,
不想要的输出应该是这样的
contact,id,names
m@a.de,123,Hans Britta
ad@23.com,343,Siggi Horst
adf@er.org,123,Hans Britta
af@go.er,232,Peter
llk@fh.com,343,Siggi Horst
ad@wer.org,789,NO ENTRY
映射文件中的一个 ID 有多个值,它们应以空格分隔打印到数据文件的列 names 中。如果映射文件中没有 ID,则应打印“NO ENTRY”。
这是 awk 命令
awk 'NR==FNR{a[$1];next}{print $0,($2 in a)? a[$2]:"NO ENTRY"}' map.csv data.csv
我显然失败了,因为我不知道如何遍历映射文件以将多个值获取到一个 id(或当前任何值)。
【问题讨论】: