首页 > 解决方案 > 使用 AWK 查找表并将第一个文件的第一列替换为第二个文件的另一列

问题描述

我正在尝试在 shell 中使用 AWK 命令进行查找表,以将 coloumn 替换为与第一个文件匹配的另一个列值。

awk 'FNR==NR{a[$1]=$1,a[$2]=$2;next}{print a{$1],a[$2]}' file1.txt file2.txt

我没有取得任何成功。请帮助我使用 AWK 命令语法,它会给我想要的输出结果。

文件1.txt

VALUE_TCP21:Z9E1AG.PNT          ABC1        SILVER
VALUE_TCP21:Z9E1CU.PNT          ABC1        COPPER
VALUE_TCP21:Z9E1RH.PNT          ABC1        HUMIDITY
VALUE_TCP21:Z9E1TT001.PNT       ABC1        TEMP

文件2.txt

VALUE_TCP21:Z9E1AG.PNT    3716.09
VALUE_TCP21:Z9E1CU.PNT    4015.55
VALUE_TCP21:Z9E1RH.PNT    54.4023
VALUE_TCP21:Z9E1TT001.PNT 24.9414

期望的输出:

 ABC1  SILVER     3716.09
 ABC1  COPPER     4015.55
 ABC1  HUMIDITY   54.4023
 ABC1  TEMP       24.9414

标签: awklookup

解决方案


awk 'FNR==NR{a[$1]=$2 OFS $3;next}{print a[$1],$2}' File1.txt File2.txt | column -t

简要说明,

  • FNR==NR{a[$1]=$2 OFS $3;next}:在file1.txt中,赋值$1为key,$2 OFS $3作为a中对应的值。
  • 在 File2 中,只需print a[$1],$2

推荐阅读