截取一段时间内的登录日志可以使用SED命令对日志文件进行抽取操作:
如图1所示,SED查看某时间段到现在的系统日志:
sed -n '/May 20 17/,$p' /var/log/messages | less
2,sed截选时间段日志:假如
日志的格式是 -
“2015-05-04 09:25:55606后面跟日志内容”这样的
目标是需要将05-04的09:25:55和09: 28:08之间的日志从/home/wwwlogs/access.log截取出来:
使用SED命令如下:
sed -n '/2015-05-04 09:25:55/,/2015-05-04 09:28:55/'p /home/wwwlogs/access.log
这样可以精确地截取出来某个时间段的日志。
如果要导出到/root/access0925_0928.log这个文件内
sed -n '/2015-05-04 09:25:55/,/2015-05-04 09:28:55/'p /home/wwwlogs/access.log >/root/access0925_0928.log
如果截取的时间段是22/Feb/2019:15:57:00,那么可以使用在 / 前使用转移符 \
sed -n '/22\/Feb\/2019:15:57:00/,/22\/Feb\/2019:15:57:59/'p /home/wwwlogs/access.log >/root/access0925_0928.log
如果需要截取的日志太大,达到几个ģ的话,不能去VI打开文件:
根据之前的日志格式,使用正则表达式:
sed -n '/2010-11-17 09:[0-9][0-9]:[0-9][0-9]/,/2010-11-17 16:[0-9][0-9]:[0-9][0-9]/'p /home/wwwlogs/access.log
如果没有问题的话,上面就能筛选出指定的时间段的日志。