linux截取日志 sed截取时间段日志

本篇文章给大家谈谈linux截取日志,以及sed截取时间段日志对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

linux下如何提取日志中指定的一段内容100分急求!!!

其实要说回答很简单,但是要给你做出来稍微费工夫,因为没有环境可以测试,你可以写一段shell代码来提取,也可以用sed/awk/grep等命令来做,但是命令的复杂度不亚于写一段shell代码。shell代码我给你算法吧。(括号里是参考代码,bash)

初始化变量(flg=0)

循环读取每一行文件(while line in `cat$log`)

变量开始[sip/2.0]为真时( if [$flg-eq 1 ]; then)

输出当前行到结果文件中( echo$line>>$retFile)

如果是用户结束( chkEnd$line#chkEnd是个shell函数检查是不是结束

if [$?-eq 1 ]; then)

变量变量开始[sip/2.0]设置为假(flg=0)

#如果是用户结束(fi)

否则(else)

如果当前行含有[sip/2.0]( echo$line| grep"[sip/2.0"

if [$?-eq 0 ]; then)

输出当前行到结果文件中(echo$line>>$retFile)

变量变量开始[sip/2.0]设置为真(flg=1)

#如果当前行含有[sip/2.0](fi)

#变量开始[sip/2.0]为真时(fi)

linux 如何截取一段时间内log日志

截取一段时间内的log日志可以使用sed命令对log文件进行抽取操作:

1,sed查看某时间段到现在的系统日志:

sed-n'/May 20 17/,$p'/var/log/messages| less

2,sed截选时间段日志:

假如日志的格式是--

“2015-05-04 09:25:55,606后面跟日志内容”这样的

目标是需要将05-04的09:25:55和09:28:08之间的日志截取出来:

使用sed命令如下:

sed-n‘/2015-05-04 09:25:55/,/2015-05-04 09:28:55/p’ logfile

这样可以精确地截取出来某个时间段的日志。

如果需要截取的日志太大,达到几个G的话,不能去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’ logfile

如果没有问题的话,上面就能筛选出指定的时间段的日志。

Linux日志截取利器——sed命令(亲测可用)

在生产环境中,往往没有条件给我们去debug排查,更多时候我们是通过日志来看具体的报错日期。

但是日志往往是一直在实时更新,而且记录条数庞大,很难直接定位到错误信息。这个时候,就可以利用sed命令来截取指定时间段内的日志(也是网上大多数博主的做法)。

具体命令如下:

这条命令可以查询2020.10.13号当天9点到9点十分中间的所有的日志信息。

但是这条命令的使用有两个前提(很多网上的博主都没有提到)

第一,日志输出的日期格式是要满足命令中的格式,如果不是的话就跟着实际的格式改

第二,输入的日期必须要真实存在!!!,比如说9点整刚好没有日志输出,那么这条命令就会失效

更加通配的命令可以是这样,使用号*

这样无论九点整的时候是否有日志产生,就都可以获取到9点整到现在的所有日志了

使用>,将截取到的内容输出到指定的文件中,方便进一步查看

ps:在实际操作中,我们一般会在后面加grep命令做进一步的关键字过滤

阅读剩余
THE END