项目上的catalina.out已经好几百兆了,没有配置让其根据日期每天生成文件;今天突然需要查询几天前7:40-7:45之间的日志,定位设置的定时器是否有问题。
通常我们常用的命令就是:#
tail -n 3000 catalina.out
但是这里明显不合适了,那有没有根据时间范围筛选指定区域打印的log的命令呢?答案肯定是有的就是sed命令。
sed命令
sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
选定行的范围(逗号 ,)# 从 2017-08-26 07:40 起 到 2017-08-26 09:00 结束
sed -n '/2017-08-26 07:40:/,/2017-08-26 09:00:/p'
#
p:打印模板块的行
这样就能筛选出符合要求的数据,而为了方便我们可以把这些数据单独生成文件# 输出日志文件到 新文件
sed -n '/2017-08-26 07:40:/,/2017-08-26 09:00:/p' catalina.out > catalina.out.20170826.log
拥有这个命令就可以很方便定位到我们想看到的具体地方,是不是很方便呢?