我们经常需要去Linux服务器上查看服务运行日志,但是有时候日志文件很大看起来很不方便,这个时候我们需要对日志进行切割筛选出自己需要的日志,比如查看某段时间内的日志,命令如下:
sed -n '/2019-04-16 10:00:00.000/,/2019-04-16 11:00:00.000/'p catalina.out > 10-11-catalina.log
此命令表示获取2019-04-16这天10点到11点的日志输出到10-11-catalina.log文件(两个字符串之间的日志,如果第二个字符串没匹配上则直到文件结尾)
sed -n '100,1000'p catalina.out > 100-1000-Line.log
此命令表示获取catalina.out第100行到1000行的日志输出到100-1000-Line.log文件
如果截取的时间段是22/Feb/2019:15:57:00,那么可以使用在 /
前使用转移符\
sed -n '/22\/Feb\/2019:15:57:00/,/22\/Feb\/2019:15:57:59/'p /var/log/nginx/access.log >/tmp/access0925_0928.log
如果需要截取的日志太大,达到几个G
的话,不能去vi
打开文件:
根据之前的日志格式,使用正则表达式:
sed -n '/2019-04-16 09:[0-9][0-9]:[0-9][0-9]/,/2019-04-16 16:[0-9][0-9]:[0-9][0-9]/'p /var/log/nginx/access.log
如果没有问题的话,上面就能筛选出指定的时间段的日志。