来自另一个文件的文件映射引用

来自另一个文件的文件映射引用

文件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

相关内容