我正在尝试在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
答案 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中的对应值。 print a[$1],$2