
我正在嘗試使用 .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