
Estoy intentando fusionar 2 archivos usando awk
. Quiero imprimir los campos 1,2 del archivo 1 tal como están y reemplazar el campo 3 de acuerdo con un mapeo almacenado en el archivo 2.
Archivo1:
1,top,yel
2,dress,bl
3,jeans,bl
Archivo2:
bl,blue
yel,yellow
Salida deseada:
1,top,yellow
2,dress,blue
3,jeans,blue
Lo que intenté hasta ahora
Aquí está el awk
comando que probé hasta ahora:
gawk 'BEGIN {FS=OFS=","} NR==FNR {seen[$3]=$1 "," $2;next} ($1) in seen {print seen[$1],$2}' file1.csv file2.csv
Sin embargo, cuando "bl" aparece dos veces en el archivo 1, el resultado solo incluye una de las apariciones. En el ejemplo anterior falta la línea "2" del archivo1.
3,jeans,blue
1,top,yellow
Respuesta1
Según el resultado deseado, parece que lo que realmente desea hacer es leer file2.csv
primero, crear un mapeo entre los campos y luego aplicarlo afile1.csv
awk 'BEGIN{OFS=FS=","} NR==FNR{clr[$1]=$2; next} {$3=clr[$3]; print}' file2.csv file1.csv