![vlookup 在 Linux 上的 awk 中工作](https://linux22.com/image/81866/vlookup%20%E5%9C%A8%20Linux%20%E4%B8%8A%E7%9A%84%20awk%20%E4%B8%AD%E5%B7%A5%E4%BD%9C.png)
您好,我有两个包含数据的文件:file1:
4,abc
3,xyz
5,fut
6,gfd
文件2:
gfd,2.3
xyz,4.5
abc,6.7
fut,3.2
我希望使用 Linux 脚本命令创建一个 file3 作为输出文件:
4,6.7
3,4.5
5,3.2
6,2.3
如何使用 FR=NFR 等 awk 脚本来执行此操作
答案1
和join
:
join -t, -1 2 -2 1 -o 1.1,2.2 <(sort -t, -k2 file1) <(sort -t, -k1 file2)
-t,
将分隔符设置为,
.-1 2
第一个文件连接字段是第二个。-2 1
第二个文件连接字段是第一个。-o 1.1,2.2
输出格式<(sort ...)
join 需要输入文件,这些文件在 join 字段上排序。
答案2
和awk
:
脚本.awk:
FNR==NR{
var[$2]=$1
}
FNR!=NR{
print(var[$1]","$2)
}
调用脚本
awk -F, -f script.awk file1 file2
答案3
类似的 awk oneliner:
awk -F"," 'FNR==NR{var[$2]=$1;next;}{print var[$1]FS$2}' file1 file2
输出:
$ awk -F"," 'FNR==NR{var[$2]=$1;next;}{print var[$1]FS$2}' file1.txt file2.txt
6,2.3
3,4.5
4,6.7
5,3.2