다른 파일의 파일 맵 참조

다른 파일의 파일 맵 참조

파일 1.txt

age name city
23  ABC  delhi
25  xyz  mumbai
12  xxx  pune 
21  YYY delhi

파일 2.txt

city   pincode
delhi  001
mumabi 002
pune   003

file1의 도시 열을 pincode로 바꿔야 합니다 file2. 중복된 항목도 제출해야 합니다.

age name pincode
23  ABC  001
25  xyz  002
12  xxx  003 
21  YYY 001

답변1

사용 awk:

awk 'NR==FNR{a[$1]=$2}NR>FNR{if($3 in a){print $1,$2,a[$3]}}' file2 file1
age name pincode
23 ABC 001
25 xyz 002
12 xxx 003
21 YYY 001

답변2

다음 awk절차가 도움이 될 것입니다.

#!/usr/bin/awk -f

FILENAME == "file2.txt" {
    if (FNR > 1) {
        city[$1]=$2
    }
}

FILENAME == "file1.txt" {
    if (FNR > 1 ) {
        print($1, $2, city[$3])
        } else {
        print
    }
}

매핑을 먼저 빌드한 다음 교체해야 하므로 file2.txt스크립트 를 실행할 때 먼저 제공해야 합니다 .file1.txt

산출

$ ./city.awk file2.txt  file1.txt 
age name city
23 ABC 001
25 xyz 002
12 xxx 003
21 YYY 001

관련 정보