awk |根据时间提取日志 [英] awk | Extract Log on the basis of Time

查看:130
本文介绍了awk |根据时间提取日志的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我具有以下格式的服务器日志,并且我希望awk可以提取2个日期之间的日志.

I have server log in the following format and I want awk which can extract logs between 2 dates.

日志格式:

00:00:00,002 INFO [LOG.XXX] XXX
01:11:00,001 INFO [LOG.XXX] XXX
02:00:01,002 INFO [LOG.XXX] XXX
SOME JUNK
02:02:00,002 INFO [LOG.XXX] XXX
03:11:00,001 INFO [LOG.XXX] XXX
SOME JUNK
03:00:00,002 INFO [LOG.XXX] XXX
04:00:00,001 INFO [LOG.XXX] XXX
10:00:01,002 INFO [LOG.XXX] XXX
10:59:01,002 INFO [LOG.XXX] XXX
12:03:01,002 INFO [LOG.XXX] XXX

在这里,我想在时间01到10之间获取日志

Here, I want to fetch logs between Time: 01 to 10

输出

01:11:00,001 INFO [LOG.XXX] XXX
02:00:01,002 INFO [LOG.XXX] XXX
SOME JUNK
02:02:00,002 INFO [LOG.XXX] XXX
03:11:00,001 INFO [LOG.XXX] XXX
SOME JUNK
03:00:00,002 INFO [LOG.XXX] XXX
04:00:00,001 INFO [LOG.XXX] XXX
10:00:01,002 INFO [LOG.XXX] XXX
10:59:01,002 INFO [LOG.XXX] XXX

我尝试过的选项:
我可以使用"-n"选项grep时间戳,然后使用sed命令剪切那些行号.但是这种方法的问题是我的日志文件以GB为单位,这使它非常慢,因此我希望awk可以达到这个目的.

Options That I tried:
I can grep the time stamp with "-n" option and then cut those line number with sed command. But Issue with this approach is my log file is in GB and this makes it very slow, so I want awk to serve this purpose.

推荐答案

您可以使用awk完成此操作

You can do it with awk

$ cat f | awk '/^01:11/,/^10:59/'
01:11:00,001 INFO [LOG.XXX] XXX
02:00:01,002 INFO [LOG.XXX] XXX
SOME JUNK
02:02:00,002 INFO [LOG.XXX] XXX
03:11:00,001 INFO [LOG.XXX] XXX
SOME JUNK
03:00:00,002 INFO [LOG.XXX] XXX
04:00:00,001 INFO [LOG.XXX] XXX
10:00:01,002 INFO [LOG.XXX] XXX
10:59:01,002 INFO [LOG.XXX] XXX

这篇关于awk |根据时间提取日志的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆