.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
그러나 파일 1에서 "bl"이 두 번 발생하면 출력에는 발생 항목 중 하나만 포함됩니다. 위의 예에서는 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