首页 > 解决方案 > 日期输出作为命令行参数

问题描述

我想计算过去 5 分钟内匹配模式的系统日志条目。

我可以硬编码时间并获得预期的输出:

$ awk '$3>"16:20:00"' /var/log/syslog | grep "UFW BLOCK" | wc -l
1502

所需时间可以通过以下方式构建:

$ date --date='5 minutes ago' '+%H:%M:%S'
16:00:00

我怎样才能将这些加入到单行中?

我尝试设置一个环境变量,但它返回整个日志。我看不到我的错误。

$ logdate=`date --date='5 minutes ago' '+%H:%M:%S'` && awk '$3>"$logdate"' /var/log/syslog | grep "UFW BLOCK"

标签: bash

解决方案


您可以使用:

awk -v dt="$(date --date='5 minutes ago' '+%H:%M:%S')" '$3>dt && /UFW BLOCK/' /var/log/syslog

请注意如何grep通过使用 awk 来执行搜索模式来避免最后一个。


推荐阅读