You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用grep命令从日志文件提取HR:MIN MST格式的起止时间?

问题:使用grep从日志文件中提取作业的开始与结束时间

我正在通过程序生成如下格式的日志文件:

Job execution started 2018-05-16 05:54:08 MST Starting job for '2018-05-16' Starting job for '2018-05-16' Control table count is : '33768' Processing batch_id: '11548 11568 11598 11611 11637 11662 11688 Completed job for '2018-05-16' Job execution completed 2018-05-16 06:04:59 MST 

我希望仅提取日志文件中的开始时间与结束时间,恳请指导如何使用grep命令实现该需求。


解决方案

很简单,我们可以利用grep的正则匹配功能精准定位包含开始和结束时间的内容,这里有几种不同的实现方式,你可以根据需求选择:

方式1:匹配完整的时间标记行

如果日志里开始时间固定跟着Job execution started,结束时间固定跟着Job execution completed,可以用这个命令提取带标记的完整时间信息:

grep -Eo 'Job execution (started|completed) [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2} [A-Z]+' your_log_file.log

命令说明:

  • -E:启用扩展正则表达式,支持用|匹配多个模式
  • -o:只输出匹配到的内容,而非整行日志
  • [0-9]{4}-[0-9]{2}-[0-9]{2}:匹配YYYY-MM-DD格式的日期
  • [0-9]{2}:[0-9]{2}:[0-9]{2}:匹配HH:MM:SS格式的时间
  • [A-Z]+:匹配时区(比如示例里的MST)

执行后会得到这样的输出:

Job execution started 2018-05-16 05:54:08 MST
Job execution completed 2018-05-16 06:04:59 MST

方式2:仅提取纯时间字符串

如果只需要时间部分,不需要前缀标记,可以用正向预查断言来过滤掉前缀:

grep -Eo '(?<=Job execution (started|completed) )[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2} [A-Z]+' your_log_file.log

命令说明:

  • (?<=...):正向预查断言,匹配前面有指定内容但不包含该内容的部分,这样就能只提取时间字符串

执行后输出会是:

2018-05-16 05:54:08 MST
2018-05-16 06:04:59 MST

方式3:处理单行日志(如示例中的情况)

如果你的日志是单行格式,上面的命令依然有效,也可以直接通过管道传递单行内容测试:

echo "Job execution started 2018-05-16 05:54:08 MST Starting job for '2018-05-16' Starting job for '2018-05-16' Control table count is : '33768' Processing batch_id: '11548 11568 11598 11611 11637 11662 11688 Completed job for '2018-05-16' Job execution completed 2018-05-16 06:04:59 MST " | grep -Eo 'Job execution (started|completed) [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2} [A-Z]+'

如果日志格式有细微调整,你可以根据实际情况微调正则表达式的匹配规则。

内容的提问来源于stack exchange,提问作者Saurabh Deotale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:15:23