bash - 日期输出作为命令行参数
问题描述
我想计算过去 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"
解决方案
您可以使用:
awk -v dt="$(date --date='5 minutes ago' '+%H:%M:%S')" '$3>dt && /UFW BLOCK/' /var/log/syslog
请注意如何grep
通过使用 awk 来执行搜索模式来避免最后一个。
推荐阅读
- sql - 是否可以在一行中获取两个不同行的数据(postgres)
- python - 如何使用Chrome和pywinauto打开和保存大量网页?
- loops - Ansible 循环或 with_items 中的项目可以同时处理吗?
- firebase - 如何在 Firestore Flutter 中访问过滤器查询的数据?
- android - 在 Azure AD B2C 中忘记密码
- java - 外部 jar 作为 Spring 应用程序
- javascript - 在类组件中工作时无法读取功能组件中未定义的属性“长度”
- youtube - 使用 get_video_info 端点提取视频流是否违反 TOS?
- sockets - 如何将普通套接字转换为 GSocket (GLib)?
- swift - 如何在 Swift 中像 Tinder 一样实现数英里之外