【问题标题】:using AWK for Lookup Table and Replace first column of 1st file with another column of 2nd file使用 AWK 查找表并将第一个文件的第一列替换为第二个文件的另一列
【发布时间】:2019-01-04 10:22:26
【问题描述】:

我正在尝试在 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

【问题讨论】:

  • 当一个文件中的$1在另一个文件中不存在时应该打印什么?
  • 实际我是映射标签永远不会发生。

标签: awk lookup


【解决方案1】:
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

【讨论】:

  • awk 'FNR==NR{a[$1]=$2" "$3;next}{print a[$1],$2}' File1.txt File2.txt 这有效
猜你喜欢
  • 1970-01-01
  • 2014-05-24
  • 1970-01-01
  • 2021-10-16
  • 2021-01-08
  • 1970-01-01
  • 2013-08-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多