使用 shell 脚本获取特定时间戳之间的日志

使用 shell 脚本获取特定时间戳之间的日志

我想使用 shell 脚本从特定时间范围的日志中提取信息。日志中的一行如下所示:

[14:58:27:176][15-10-2015]: testing1-vidya-Thu Oct 15 11:49:27 IST 2015
[14:59:27:178][15-10-2015]: testing2-vidya-Thu Oct 15 11:49:27 IST 2015
[15:00:27:179][15-10-2015]: testing3-vidya-Thu Oct 15 11:49:27 IST 2015
[15:01:27:180][15-10-2015]: testing4-vidya-Thu Oct 15 11:49:27 IST 2015
[15:01:27:181][15-10-2015]: testing5-vidya-Thu Oct 15 11:49:27 IST 2015
[15:02:27:182][15-10-2015]: testing6-vidya-Thu Oct 15 11:49:27 IST 2015
[15:02:27:183][15-10-2015]: testing7-vidya-Thu Oct 15 11:49:27 IST 2015
[15:02:27:184][15-10-2015]: testing8-vidya-Thu Oct 15 11:49:27 IST 2015
[15:02:27:191][15-10-2015]: testing9-vidya-Thu Oct 15 11:49:27 IST 2015
[15:03:27:192][15-10-2015]: testing10-vidya-Thu Oct 15 11:49:27 IST 2015
[15:03:27:193][15-10-2015]: testing11-vidya-Thu Oct 15 11:49:27 IST 2015
[15:03:27:208][15-10-2015]: testing12-vidya-Thu Oct 15 11:49:27 IST 2015
[15:04:27:209][15-10-2015]: testing13-vidya-Thu Oct 15 11:49:27 IST 2015
[15:49:27:210][15-10-2015]: testing14-vidya-Thu Oct 15 11:49:27 IST 2015
[13:02:17:209][15-10-2015]: testing13-vidya-Thu Oct 15 11:49:27 IST 2015
[15:04:27:209][16-10-2015]: testing13-vidya-Fri Oct 16 11:49:27 IST 2015
[15:49:27:210][16-10-2015]: testing14-vidya-Fri Oct 16 11:49:27 IST 2015

我需要以特定的时间间隔提取数据。例如2015年10月15日14:59至15:03之间如下所示:

[14:59:27:178][15-10-2015]: testing2-vidya-Thu Oct 15 11:49:27 IST 2015
[15:00:27:179][15-10-2015]: testing3-vidya-Thu Oct 15 11:49:27 IST 2015
[15:01:27:180][15-10-2015]: testing4-vidya-Thu Oct 15 11:49:27 IST 2015
[15:01:27:181][15-10-2015]: testing5-vidya-Thu Oct 15 11:49:27 IST 2015
[15:02:27:182][15-10-2015]: testing6-vidya-Thu Oct 15 11:49:27 IST 2015
[15:02:27:183][15-10-2015]: testing7-vidya-Thu Oct 15 11:49:27 IST 2015
[15:02:27:184][15-10-2015]: testing8-vidya-Thu Oct 15 11:49:27 IST 2015
[15:02:27:191][15-10-2015]: testing9-vidya-Thu Oct 15 11:49:27 IST 2015
[15:03:27:192][15-10-2015]: testing10-vidya-Thu Oct 15 11:49:27 IST 2015
[15:03:27:193][15-10-2015]: testing11-vidya-Thu Oct 15 11:49:27 IST 2015
[15:03:27:208][15-10-2015]: testing12-vidya-Thu Oct 15 11:49:27 IST 2015

我是 shell 脚本的新手。我尝试过使用 grep 命令。谁能建议我该怎么做?

答案1

你可以使用sed.

sed -n '/\[14:59/,/\[15:03/p' log

更新:通过 ssh 远程

ssh [email protected] "sed -n -e '/\[14:59/,/\[15:03/p' /var/logfile"

要仅提取在特定日期的感兴趣时间之间找到的行,请在搜索字符串中包含该日期:

sed -n '/\[14:59.*15-10-2015*/,/\[15:03.*15-10-2015/p' log

答案2

Grep 可以使用正则表达式,如下所示:

grep -E "^\[(14:59|15:00|15:01|15:02|15:03)" /path/to/file

相关内容