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