awk 参数替换失败

awk 参数替换失败

我在 Ubuntu 20.04 Mate 桌面环境中。

date当我尝试将以下行的字符串传递给正则表达式查询时遇到奇怪的失败:

  date="2020-12-11"

  cat /var/log/dpkg.log | awk  ' / installed / && /$date/ {print $5}'

我尝试了论坛中建议的不同组合:

  cat /var/log/dpkg.log | awk  ' / installed / && /${date}/ {print $5}'

  cat /var/log/dpkg.log | awk  ' / installed / && "/$date/" {print $5}'

但它们不起作用。

答案1

您可以使用-v命令行选项传递变量:

date="2020-12-11"

cat /var/log/dpkg.log | awk  -v date="$date" ' / installed / && $0 ~ date {print $5}'

ENVIRON或者在环境变量的情况下通过数组

export date="2020-12-11"

cat /var/log/dpkg.log | awk  -v date="$date" ' / installed / && $0 ~ ENVIRON["date"] {print $5}'

例如将 shell 变量作为 /pattern/ 传递给 awk

相关内容