Linux查看指定时间之内日志记录命令(跨时间段sed命令失效问题说明、grep查询日志内容不全)

记录一下查看指定时间段内容的命令:

    1. 使用grep:

1.1 -- 查询2020-11-07 15:00-16:59内容(在原来的内容test.log中进行追加,nohup.out为项目启动之后默认生成的文件,可以理解成是项目启动输出到控制台的内容输出到此文件中)

	 grep '2020-11-07 1[5-6]' nohup.out >> /temproject/logs/test.log


1.2-- 查询16:00:00-16:19:59内容并输出到指定文件test.log中(在原来的内容test.log中进行覆盖)

    grep '2020-11-07 16:[0-1]' nohup.out > /temproject/logs/test.log
	
	测试发现grep命令只支持类似于16:00-16:10或是16:12-16:14这种类型;如果想查询15:59-16:14这种类型,使用grep只能按照16:00-16:19:59查询;现实场景中日志作为问题定位的依据,最好能实现指定时间查询;此时就可以使用sed命令;

    2. 使用sed命令:

2.1 查询2020-11-07中15:59-16:14:59时间段内的内容并输出到test.log中

	sed -n '/2020-11-07 15:59:[0-9][0-9]/,/2020-11-07 16:14:[0-9][0-9]/p' nohup.out >/temproject/logs/test.log
	
使用说明:对于这种跨时间段的使用sed命令有时会发现查询出来的内容是空,首先检查一下命令格式是否正确,其次要查询一下这个时间段内的数据确实存在.说一下自己遇见的场景:
	自己想查询15:58-16:14时间段内容的内容,使用的命令:
	sed -n '/2020-11-07 15:58:[0-9][0-9]/,/2020-11-07 16:14:[0-9][0-9]/p' nohup.out >/temproject/logs/test.log,但是查询的内容为空,实际nohup.out 中日志内容是从15:59开始进行记录,查询时间从15:59以后就能查寻到.多次测试发现使用sed命令开始查询时间只能从有日志记录时间往后开始查询(如果从有日志记录时间之前开始查询则为空),查询的结束时间没有要求.

注意:sed命令中-n 与p联用会打印/符合正则/中的内容,//中表示的是正则内容.
    3.关于查看指定时间段内的所有完整日志信息说明
如果使用上面的grep命令查询会发现只能查询出指定时间段内的单行数据,在这里插入图片描述
这明显与现实场景不符合,所以需要对上面的命令进行改造.我想到的办法是将查询出的时间行数以后尽可能多的行数查询出来,改造后的命令:

grep -A1000 '2020-12-01 12:0[0-1]' nohup.out  > /temproject/logs/testGrep.log	
-A1000表示是符合时间范围的两个时间段之间的1000行数据.显示多少行可自行设置;

使用改造后的命令查询出来的内容:
在这里插入图片描述

如果使用上面的sed命令会查询出符合时间段内的所有内容.
    4.查询指定日期中的所有内容

查询12-09这天的所有内容,多次测试发现最优指令:
sed -n '/2020-12-09 /,/2020-12-10 /p' nohup.out >/temproject_https/logs/test.log

猜你喜欢

转载自blog.csdn.net/weixin_43401380/article/details/109548846