【问题标题】:How to Use shell variable in the If condition of Awk(inside single quotes) [duplicate]如何在 Awk 的 If 条件中使用 shell 变量(单引号内)[重复]
【发布时间】:2016-10-24 09:21:47
【问题描述】:

我需要写这个语句:

cat filename | awk -F '|' '($4 ~ /"$Var_PRJ"/) && ($7 == "Y")'.

但是,$Var_PRJ 没有得到扩展(可能是因为 awk 使用单引号)。如何使用 Var_PRJ 的实际值实现此功能?

注意:cat filename | awk -F '|' '($4 ~ /1234/) && ($7 == "Y")' 工作正常。

【问题讨论】:

  • 您是否尝试过寻找解决方案?
  • 你可以使用-v开关例子$ x=1$ awk -v var=$x 'BEGIN{print var}'1

标签: bash shell unix awk


【解决方案1】:

这样就可以了

awk -F '|' '($4 ~ /'"$Var_PRJ"'/) && ($7 == "Y")' filename

注意 BASH 变量前后的双引号

【讨论】:

  • 投反对票的人请解释投反对票的原因。
  • 我只是投了反对票,因为这会使 shell 变量扩展成为实际 awk 脚本的一部分,从而导致神秘错误(可能还有安全漏洞)。见stackoverflow.com/questions/19075671/…
猜你喜欢
  • 1970-01-01
  • 2014-12-31
  • 2019-08-04
  • 1970-01-01
  • 2019-12-13
  • 1970-01-01
  • 2014-01-20
  • 2022-01-18
相关资源
最近更新 更多