在某个时间段之间进行 Grep
Grep between some period
我有一个很大的日志文件,其中每条记录都以日期开头,格式如下:
[2014-10-06 07:03:49]
按特定时间段进行 grep 的最简单方法是什么?
我想按特定日期范围进行 grep,例如,以示例日期,从 06.10.2014 到 08.10.2014。
如果您的格式类似于 [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
我不会使用 grep
,我会使用 awk
。
awk -v from="[2014-10-20 00:00:00]" -v to="[2015-01-02 23:59:59]" '
{datetime = " " }
from <= datetime && datetime <= to
' file
祝贺您使用了一种合理、可排序的日期时间格式。
我有一个很大的日志文件,其中每条记录都以日期开头,格式如下:
[2014-10-06 07:03:49]
按特定时间段进行 grep 的最简单方法是什么?
我想按特定日期范围进行 grep,例如,以示例日期,从 06.10.2014 到 08.10.2014。
如果您的格式类似于 [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
我不会使用 grep
,我会使用 awk
。
awk -v from="[2014-10-20 00:00:00]" -v to="[2015-01-02 23:59:59]" '
{datetime = " " }
from <= datetime && datetime <= to
' file
祝贺您使用了一种合理、可排序的日期时间格式。