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

问题描述 投票:0回答:1

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

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
awk lookup
1个回答
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中对应的值。
  • 在文件2中,只需
    print a[$1],$2
© www.soinside.com 2019 - 2024. All rights reserved.