我正在尝试使用 .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