vlookup 在 Linux 上的 awk 中工作

vlookup 在 Linux 上的 awk 中工作

您好,我有两个包含数据的文件: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

相关内容