【问题标题】:Is there any way to pass a number stored in a variable to awk for this command?有没有办法将存储在变量中的数字传递给这个命令的 awk?
【发布时间】:2019-02-01 10:48:37
【问题描述】:

我正在尝试构建一个脚本,该脚本需要几天时间才能返回日志审查/分析作为参数:

script.sh 5

这将显示一个帐户过去 5 天的详细流量。它基于这个命令:

zcat $path/* |awk -vDate=`date -d'now-5 days' +[%d/%b/%Y:%H:%M:%S` ' { if ($4 > Date) print $1, $12, $15, $16, $17, $23, $24}' | sort | uniq -c | sort -fr | head

如何将该天数存储为变量并将其传递给 awk?

days=$1
zcat $path/* |awk -vDate=`date -d'now-$days days' +[%d/%b/%Y:%H:%M:%S` ' { if ($4 > Date) print $1, $12, $15, $16, $17, $23, $24}' | sort | uniq -c | sort -fr | head

【问题讨论】:

  • 您在-d'now-$days days' 中的$days 在单引号之间且未计算。

标签: bash shell variables awk


【解决方案1】:

您没有将变量传递给awk,而是将其传递给date

awk -v date="$(date -d "now-$days days"  +"[%d/%b/%Y:%H:%M:%S")" 'script'

【讨论】:

  • 我什至无法猜测“变量中的变量”可能意味着什么。我发布的脚本完全符合您的要求。你试过了吗?如果它没有做您想做的事,那么请澄清它以什么方式失败以及您想要什么。我知道你的工作是技术支持,所以我假设你知道听到“它不起作用”而没有描述“它不起作用”的方式是多么令人沮丧。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-11
  • 1970-01-01
  • 1970-01-01
  • 2019-10-28
  • 2019-01-31
  • 2021-01-08
  • 1970-01-01
相关资源
最近更新 更多