使用AWK查找表并将第一文件的第一列替换为第二文件的另一列

时间:2018-07-27 09:58:36

标签: awk lookup

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

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

我没有获得任何成功。请使用AWK命令语法帮助我,该语法将为我提供所需的输出结果。

File1.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

File2.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

1 个答案:

答案 0 :(得分:2)

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分配为键,将$2 OFS $3分配为a中的对应值。
  • 在File2中,仅print a[$1],$2