前言
在linux上查找日志的时候,如果我想找出某个时间段的日志,比如查找今天早上8点到下午2点的日志。
用grep不太方便直接过滤出来,可以使用sed根据时间去查找
sed -n ‘/开始时间日期/,/结束时间日期/p’ all.log
查找日志
时间格式都是类似 2019-10-21 07:44:20
比如我要查找从 2019-10-24 22:16:21 到 2019-10-24 22:16:59 这个时间段的日志;
sed -n ‘/2019-10-24 22:16:21/,/2019-10-24 22:16:59/p’ all.log
注意事项:
(1)开始时间和结束时间必须要是日志里面有的,要是没有的时间,那查找就没有结果;
(2)如果开始时间日志里面是没有的,那么查询结果为空;
(3)如果结束时间日志里面是没有的,查询的结果就是开始时间到最后的全部日志;
模糊查询
如果不知道日志的开始时间,不能精确到秒,可以用模糊查询,比如查询时间段2019-10-24 22:14 到 2019-10-24 22:16
sed -n '/2019-10-24 22:14:*/,/2019-10-24 22:16:*/p' all.log
也可以按小时模糊查询
sed -n '/2019-10-24 21*/,/2019-10-24 22*/p' all.log
结合grep查询
sed 也可以结合 grep 使用,比如我查询上面日志某个时间段的带有 POST 的日志行:
sed -n '/2019-10-24 22:16:21/,/2019-10-21 20:16:58/p' all.log | grep POST
日志导出
我们可以查询某个时间段的日志,导出到本地;
sed -n '/2019-10-24 22:16:21/,/2019-10-21 20:16:58/p' all.log > yoyo.log