【发布时间】:2023-03-04 04:30:02
【问题描述】:
我正在尝试 grep 日志文件以查找过去 24 小时内的条目。我想出了以下命令:
grep "$(date +%F\ '%k')"\|"$(date +%F --date='yesterday')\ [$(date +%k)-23]" /path/to/log/file
我知道正则表达式可以在 grep 中使用,但对正则表达式不是很熟悉。你看,我正在寻找今天或昨天在当前时间或更高时间之间的任何东西。这不起作用,我猜是由于我试图在 grep 的正则表达式中将命令作为变量传递的方式。我也不反对将 awk 与 awk 一起使用我想出了以下内容,但它没有正确检查变量:
t=$(date +%F) | y=$(date +%F --date='yesterday') | hr=$(date +%k) | awk '{ if ($1=$t || $1=$y && $2>=$hr) { print $0 }}' /path/to/log/file
我假设 systime 可以与 awk 一起使用,而不是设置变量,但我根本不熟悉 systime。任何命令的任何建议将不胜感激!哦,这是日志格式:
2012-12-26 16:33:16 SMTP connection from [127.0.0.1]:46864 (TCP/IP connection count = 1)
2012-12-26 16:33:16 SMTP connection from (localhost) [127.0.0.1]:46864 closed by QUIT
2012-12-26 16:38:19 SMTP connection from [127.0.0.1]:48451 (TCP/IP connection count = 1)
2012-12-26 16:38:21 SMTP connection from [127.0.0.1]:48451 closed by QUIT
2012-12-26 16:38:21 SMTP connection from [127.0.0.1]:48860 (TCP/IP connection count = 1)
【问题讨论】:
-
我们可以查看您的日志文件吗?漂亮吗?
-
这里是日志的前几行:2012-12-26 16:33:16 SMTP connection from [127.0.0.1]:46864 (TCP/IP connection count = 1) 2012-12 -26 16:33:16 来自 (localhost) [127.0.0.1]:46864 的 SMTP 连接由 QUIT 关闭 2012-12-26 16:38:19 来自 [127.0.0.1]:48451 的 SMTP 连接(TCP/IP 连接数 = 1) 2012-12-26 16:38:21 来自 [127.0.0.1]:48451 的 SMTP 连接被 QUIT 关闭 2012-12-26 16:38:21 来自 [127.0.0.1]:48860 的 SMTP 连接(TCP/IP 连接计数 = 1)