【问题标题】:Awk 3rd column if second coulmn matches with a variable如果第二列与变量匹配,则 Awk 第三列
【发布时间】:2018-06-26 09:54:40
【问题描述】:

我是 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 来实现。

【问题讨论】:

标签: linux shell awk


【解决方案1】:

执行以下操作,然后它应该会飞。在 awk 变量不像 shell 那样工作,你必须在 awk 代码中使用 -v var_name 明确提及它们。

name="ABC"
awk -F';' -v name="$name" '$2==name{ print $3 }' file.txt

【讨论】:

  • 我做到了,这是为了回答一个已被问过十亿次的已知重复项
  • 它可能已经发布了数十亿次,但我尝试在这里没有找到简单的答案。可能是因为我是 awk 的新手,我无法将现有问题联系起来。谢谢@RavinderSingh13,它成功了。
  • 一个简单的谷歌搜索“如何将 shell 变量传递给 awk”就足够了
  • 是的,但在此之前需要知道变量在 awk 中的工作方式不同。不是吗?还是这个平台仅供专家使用?
  • @user3082166:如果您觉得您是该网站的新手 - 请仔细阅读 How do I ask a good question? 以了解该网站的运作方式
猜你喜欢
  • 2018-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-20
相关资源
最近更新 更多