加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 如何在一个时间范围内grep httpd error_log?

发布时间:2020-12-13 16:33:34 所属栏目:Linux 来源:网络整理
导读:我怎样才能根据时间范围从一个巨大的(120GB)httpd error_log中仅查找行,比如说: from 2011-11-15 11:30 pmto 2011-11-16 01:30 am 谢谢! 解决方法 您可能需要进行深入研究,我首先要获取日期范围: grep -e "2011-11-[15-16] " error_log filteredgrep -v
我怎样才能根据时间范围从一个巨大的(120GB)httpd error_log中仅查找行,比如说:
from 2011-11-15 11:30 pm
to   2011-11-16 01:30 am

谢谢!

解决方法

您可能需要进行深入研究,我首先要获取日期范围:
grep -e "2011-11-[15-16] " error_log > filtered
grep -v -e "2011-11-15 [0-10]:" | grep -v -e "2011-11-15 11:[0-29]" > filtered
grep -v -e "2011-11-16 [2-23]:" | grep -v -e "2011-11-16 01:[31-59]" > filtered

cat filtered

我能想到但尚未完成的最有效的方法是找到日期范围的开始和结束字节并得到它; (这显然可以用grep)但我不知道如何从文件中获取一系列字节 – 可能需要一些awk技能

编辑:因为这是一个有趣的问题 – 我做了一些挖掘:

您可以执行以下操作来获取第一个字节偏移:

# Get first byte offset,leftmost number is the offset...
grep -m 1 -b "2011-11-15 11:3" error_log
 # Get last byte offset
grep -m 1 -b "2011-11-16 01:3" error_log

 #(Subtract first number from last number to get byte length) Then do:

dd if=error_log of=filtered bs=c skip=<first number> count=<last_byte#-first_byte#>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读