根据时间戳剪切日志文件部分的快速脚本

根据时间戳剪切日志文件部分的快速脚本

我正在寻找快速脚本这将解析一个大型的 mail.log,并返回其中的一部分两个指定时间戳之间。我想在我的所有邮件服务器上运行它,并让它们将相关日志部分复制到中心位置以供进一步分析。

我用 bash 编写了一些可以运行的东西,但是速度很慢。

有人知道吗任何已经存在的东西为了实现这一点——或者我需要学习 perl 并自己做一些东西?

(我没有把这个放在 SO 上,因为我还没有到我想任何代码 – 只是寻找别人已经在使用的东西)

答案1

我喜欢 awk:)

对于我的日志,其格式如下:

Jul 14 12:49:10 xxxxxx sendmail[31337]: ...........

我会用:

awk '$3 >= "12:00:00" && $3 <= "13:00:00" {print;}' < /var/log/maillog

据推测,您可以根据需要进行调整,例如,如果您不按天拆分日志。

奖金:

Apache 格式,我碰巧有使用过:

xxx.xxx.xxx.xxx - - [01/Jul/2009:03:06:24 -0400] "GET /favicon.ico HTTP/1.1" 200 3638
awk '$4 >= "[01/Jul/2009:03:00:00" && $4 <= "[01/Jul/2009:04:00:00" {print;}' < access_log

答案2

对于特定的日期范围并打印>输出文件

(我不能在上面的答案中将其作为评论,否则我会这样做)

高血压

awk '$2 >= "21" && $3 >= "09:00:00" && $2 >= "21" && $3 <= "11:00:10" {print > "m_range.log";}' < /var/log/m.log

cat m_range.log 
...
Nov 21 09:00:17 mail postfix/qmgr[1694]: 1C50D276524A: from=<[email protected]>, size=2378, nrcpt=1 (queue active)
...

相关内容