
2개의 파일을 합쳐보려고 합니다 awk
. file1의 필드 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