awk - 使用 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
解决方案
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
推荐阅读
- php - 使用 jQuery 刷新 php 数据不起作用
- c# - C# & SQL Server 实时 DML 事件
- typescript - 元素隐式具有“任何”类型,因为“字符串”类型的表达式
- material-design - Google Material Ripple 效果不适用于 Sveltejs
- javascript - Firebase:我必须单击“继续”按钮两次才能执行任何操作
- javascript - 具有透明背景和渐变边框的元素
- python - 有没有一种有效的方法可以根据数组中的位置计算 numpy 数组中的值?
- json - 大规模合并基于多个键的 JSON 文件
- ios - iOS 13 中的 UIImagePickerController:苹果放弃导航栏可定制性了吗?
- visual-studio-2019 - 构建:1 成功,2 失败,0 最新,0 跳过 Visual Studio 2019