我想获取两个日期之间的日志详细信息,但无法使用以下命令打印任何内容:
egrep "^\[MAY 16 11:00:00\]" alert.log -A 10000 | egrep "^\[MAY 16 16:30:00\]" -B 10000
答案1
使用sed
:
sed -n '/May 16 11:00:00/,/May 16 16:30:00/p' /path/to/inputfile
对于grep
,我认为问题可能首先是你的参数的顺序——你把-A
和-B
参数后输入文件,因此grep
可能尝试读取名为-A
、-B
和 的文件10000
;其次,你没有逃避方括号。您的管道可以按如下方式工作:
grep -E -A10000 'May 16 11:00:00' alert.log | grep -E -B10000 'May 16 16:30:00'
请注意,只有当您确实有一个与您正在搜索的确切时间戳相匹配的日志条目时,这些才有效;相应地调整您想要作为搜索限制的第一个和最后一个条目。
答案2
egrep
根据您提供的示例使用:
egrep "May 16 1[1-6]:..:.." /path/to/file | egrep -v "May .. 16:[3-5][1-9]:[0-9][1-9]"