如何获取两个时间范围之间的所有日志行?

时间:2017-10-18 14:52:16

标签: php regex awk grep

我的日志文件有这样的行:

2017/10/18 00:00:00 [WARNING]
2017/10/18 00:10:00 [WARNING]
2017/10/18 00:20:00 [WARNING]
2017/10/18 01:00:00 [WARNING]
2017/10/18 01:10:00 [WARNING]
2017/10/18 01:20:00 [WARNING]

例如,我希望获得2017/10/18 00:15:002017/10/18 01:15:00之间的所有行。

我一直在尝试使用grep和regex,但我无法找到解决方案。我已经阅读了几个解决方案(like this)并了解了awk。但似乎awk也需要一个正则表达式模式?

1 个答案:

答案 0 :(得分:2)

我会像这样使用awk

awk '$1" "$2>="2017/10/18 00:15:00" && $1" "$2<="2017/10/18 01:15:00"' file

您也可以使用变量开头和结尾:

#!/bin/bash
BEGIN="2017/10/18 00:15:00"
END="2017/10/18 01:15:00"
awk -v begin="${BEGIN}" \
    -v end="${END}" \
    '$1" "$2>=begin && $1" "$2<=end' file