用于数字范围的 Grep

spu*_*der 21 grep regular-expression

您将如何在日志文件中搜索日期范围?

日志文件如下所示:

01/14 00:00:01  INFO:     received connect request from 10.10.10.10 
Run Code Online (Sandbox Code Playgroud)

我需要将日志压缩为 10 分钟,从 8:25 开始一直持续到 8:35

当我使用以下 egrep 时,我发现结果太多,例如00:08:25 01:08:25... 08:25:00..

我怎么才能08:25:00通过08:35:59

我试过的

cat foo | egrep "08:2[5-9]|08:3[0-5]"
cat foo | egrep "08:2[5-9]:??|08:3[0-5]:??"
cat foo | egrep "08:2[5-9]:[0-9][0-9]|08:3[0-5]:[0-9][0-9]"
Run Code Online (Sandbox Code Playgroud)

Tim*_*tin 15

这应该会产生所需的结果。

egrep "08:[2][5-9]:[0-5][0-9]|08:[3][0-5]:[0-5][0-9]" foo
Run Code Online (Sandbox Code Playgroud)

使用cat在这种情况下没有必要的。


cuo*_*glm 5

通过这些输入:

01/15 00:00:01  INFO:     received connect request from 10.10.10.10
01/14 00:00:01  INFO:     received connect request from 10.10.10.10
01/14 08:25:01  INFO:     received connect request from 10.10.10.10
01/14 00:00:01  INFO:     received connect request from 10.10.10.10
01/14 00:00:01  INFO:     received connect request from 10.10.10.10
01/14 08:35:01  INFO:     received connect request from 10.10.10.10
01/14 00:00:01  INFO:     received connect request from 10.10.10.10
Run Code Online (Sandbox Code Playgroud)

您可以使用以下命令打印两个图案之间的所有行awk

awk -v date='01/14' '$1!=date{next};/08:25/,/08:35/' logfile

01/14 08:25:01  INFO:     received connect request from 10.10.10.10
01/14 00:00:01  INFO:     received connect request from 10.10.10.10
01/14 00:00:01  INFO:     received connect request from 10.10.10.10
01/14 08:35:01  INFO:     received connect request from 10.10.10.10
Run Code Online (Sandbox Code Playgroud)