他のファイルのファイルマップ参照

他のファイルのファイルマップ参照

ファイル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

関連情報