根据第二个 CSV 文件中的条目替换 CSV 文件的一个字段

根据第二个 CSV 文件中的条目替换 CSV 文件的一个字段

我正在尝试使用 .merge 将两个文件合并在一起awk。我想按原样打印文件 1 中的字段 1,2,并根据文件 2 中存储的映射替换字段 3。

文件1:

1,top,yel
2,dress,bl
3,jeans,bl

文件2:

bl,blue
yel,yellow

期望的输出:

1,top,yellow
2,dress,blue
3,jeans,blue

到目前为止我尝试过的

这是awk我到目前为止尝试过的命令:

gawk 'BEGIN {FS=OFS=","} NR==FNR {seen[$3]=$1 "," $2;next} ($1) in seen {print seen[$1],$2}' file1.csv file2.csv

但是,当“bl”在文件 1 中出现两次时,输出仅包含其中一次出现。在上面的示例中,file1 中缺少行“2”。

3,jeans,blue
1,top,yellow

答案1

根据您想要的输出,听起来您真正想要做的是file2.csv首先读取,创建字段之间的映射,然后将其应用到file1.csv

awk 'BEGIN{OFS=FS=","} NR==FNR{clr[$1]=$2; next} {$3=clr[$3]; print}' file2.csv file1.csv

相关内容