在系统应用集中部署的时候,经常会查看一些日志,有时候因为日志文件太大,不能去vi打开文件,而难以定位,因此获取某段时间的日志是对维护人员是非常关键的事情。
Linux 命令:
① sed -n ‘/开始时间/,/结束时间/p’ logfile[日志文件名] //表示查询开始-结束时间之间的日志行
② sed -n ‘/xxx/p’ 表示输出 包含xxx的日志行
③ sed -n ‘/xxx\|yyy/p’ 表示输出 包含xxx或包含yyy的日志行
注意:
p表示,满足前面的条件就 打印输出
!p表示,满足前面的条件就 不打印输出
例如:sed -n ‘/2020-05-30 00:01:28/,/2020-05-30 00:05:50/p’ log_file_catalina.out
上面的命令就能筛选出指定的时间段内的日志。
// 1. 查询2020-05-30 00:05:50这个时间点的日志
[root@oradb ~]# sed -n '/2020-05-30 00:05:50/p' log_file_catalina.log
// 2. 查询2020-05-30 00:05:50并且包含abc的日志,这里用到正则 .* 表示任意字符有0个或多个
[root@oradb ~]# sed -n '/2020-05-30 00:05:50.*abc/p' log_file_catalina.log
// 3. 查询2021-10-10 00:11 和 2021-10-10 00:13 两个时间点的日志行,
// 这里用到正则 | 表示或的意思,注意|为特殊字符需要转义 \|
[root@oradb ~]# sed -n '/2020-05-30 00:04:50\|2020-05-30 00:05:50/p' log_file_catalina.log