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在这种情况下没有必要的。
通过这些输入:
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)