linux - 如果第二列与变量匹配,则 Awk 第三列
问题描述
我是 Awk 和 linux 的新手。如果第二列与变量匹配,我想打印第三列。
file.txt
1;XYZ;123
2;ABC;987
3;ZZZ;999
所以我想打印 987,在检查第二列是否为 ABC 之后
name="ABC"
awk -F';' '$2==$name { print $3 }' file.txt
但这不起作用。请帮忙。请注意,我只想使用 AWK,以了解如何使用 awk 来实现。
解决方案
执行以下操作,然后它应该会飞。在awk
变量不像 shell 那样工作时,您必须通过-v var_name
在 awk 代码中使用来明确提及它们。
name="ABC"
awk -F';' -v name="$name" '$2==name{ print $3 }' file.txt
推荐阅读
- eclipse - 编辑框/Nodeclipse EditBox 插件不再适用于 Eclipse 4.18.0
- css - 带标题的图像 - “图形”框不适应图像大小,更改图像大小,长标题不换行,
- java - Spring Boot弹性 - 设置默认日期格式
- multithreading - 在 scoped_threshhold 之外的 Rust 处理变量
- javascript - 在函数中返回某些内容后如何重新渲染反应组件?
- azure - Kusto 将 ID 转换为名称
- excel - 是否有使用 vba 复制另一个工作簿的防弹方法?
- javascript - 在缩放期间在时间刻度上设置刻度
- javascript - VueJS, an endless loop of object creation and Error: "Maximum call stack size exceeded"
- c# - ML.NET 向现有模型添加新数据