AWK를 사용하여 다른 파일의 값을 기반으로 한 파일 업데이트

AWK를 사용하여 다른 파일의 값을 기반으로 한 파일 업데이트

두 개의 파일 file1.csv(20열 410k 행)와 data.csv(4열 1800행)가 있습니다. 내가 하고 싶은 일은 data.csv의 첫 번째 열이 file1.csv의 두 번째 열과 일치하는 경우 file1.csv의 첫 번째 열을 data.csv의 세 번째 열 값으로 덮어쓰는 것입니다. 일치하는 항목이 없으면 기존 값을 유지합니다.

이 명령은 일치하는 행을 나열하지만 교체 부품을 올바르게 가져오지는 않습니다.

awk -F"," 'BEGIN{OFS=","} {if (NR==FNR) {a[$1]=$3; next} if ($2 in a) print}' data.csv file1.csv
 > file3.csv

감사해요!

답변1

내가 올바르게 이해했다면 다음을 원합니다.

awk -F"," 'BEGIN{OFS=","} 
           {
            if (NR==FNR) {
                a[$1]=$3; 
                next
            } 
            if ($2 in a){
                $1=a[$2]
            }
             print
           }' data.csv file1.csv

거의 다 왔습니다. $1첫 번째 파일에서 저장한 내용으로 설정 하고 해당 줄을 인쇄하면 됩니다.

관련 정보