问题:我们服务启动后日志会一直打在一个文件里,没有按照每日定时备份清理,所以现在日志已经500G,一但报错只能用sed去截取报错这段时间日志去查看。通常我都会用以下语句去截取定位:
sed -n '/2022-05-26 07:04:00/,/2022-05-26 07:06:00/p' dong.log > dong2.log
从日志的截图可以看出我没有 07:04:00这个时间点的日志,只有04分到06分的日志,多以依靠这个语句去截取是截取不出04分到06分之间的日志的,因为正常情况下我不知道哪个时间点会输出日志,只能去范围截取因此用以下正则表达式会准确接出日志区间:
sed -n '/2022-05-26 07:0[0-9]/,/2022-05-26 0[0-9]/p' dong.log > dong2.log
这样会截取到01分到09分这9分钟的日志。
PS:正则表达式基础语句
符号 | 说明 |
* | 前一个字符匹配0次或任意多次 |
. | 匹配除了换行符外的任意一个字符 |
^ | 匹配行首 |
$ | 匹配行尾 |
[] | 匹配中括号中指定的任意一个字符,只匹配一个字符 |
[^] | 匹配中括号的字符以外的任意一个字符 |
\ | 转义字符,用于取消特殊符号的含义 |
\{a\} | 表示其前面的字符恰好出现a次 |
\{a,\} | 表示其前面的字符出现不小于a次 |
\{a,b\} | 表示其前面的字符至少出现a次,最多出现b次 |