文件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
我需要用 pincode 替换 file1 中的城市列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
}
}
执行脚本时,您必须给出 before,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