linux grep 获取当天时间段,linux – 如何在一个时间范围内grep httpd error_log?
您可能需要进行深入研究,我首先要获取日期范围:
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= count=