一段时间之间的油脂

时间:2015-05-20 14:29:35

标签: linux logging grep

我有大型日志文件,其中每条记录都以日期开头,格式如下:

[2014-10-06 07:03:49]

在特定时间段内最简单的方法是什么?

我想在特定的日期范围内进行grep,例如,从2014年10月6日到2014年10月8日的示例日期。

2 个答案:

答案 0 :(得分:2)

如果您的格式类似[YYYY-MM-DD HH:MM:SS],则必须创建某种正则表达式,以涵盖您愿意grep的日期。

例如,如果您只想过滤年份为2014年和第10个月的6到8天,您可以说:

grep '^\[2014-10-0[6-8]' file

这表示:获取所有以[2014-10-0开头,后跟6,7或8的行。

测试

$ cat a
[2014-10-06 07:03:49] line1
[2014-10-06 07:14:49] line2
[2014-10-06 07:03:49] line3
[2014-10-07 07:03:49] line4
[2014-10-08 07:09:49] line5
[2014-10-09 07:03:49] line6
[2015-01-11 07:03:49] line7
$ grep '^\[2014-10-0[6-8]' a
[2014-10-06 07:03:49] line1
[2014-10-06 07:14:49] line2
[2014-10-06 07:03:49] line3
[2014-10-07 07:03:49] line4
[2014-10-08 07:09:49] line5

答案 1 :(得分:1)

我不会使用grep,我会使用awk

awk -v from="[2014-10-20 00:00:00]" -v to="[2015-01-02 23:59:59]" '
    {datetime = $1 " " $2}
    from <= datetime && datetime <= to
' file

祝贺您使用合理的可排序日期时间格式。