我每天都在处理日志文件。 我一直在使用sed来实现我的目标,即提取时间戳之间的某些数据行。 例如,我使用:
sed '/20150720 15:06:00/,/20150720 16:25:00/! d' logfile.log > /tmp/logpart.log
但是,这只有在时间戳实际上匹配文件中的一行时才起作用。 我如何强制sed处理我想要的数据,而不必进入文件以获取实际的时间戳? 例如,在上面的例子中,我只想在15:00和16:30之间的所有内容,而不pipe文件中是否有匹配的时间戳。
由于日志文件具有按字典顺序sorting的时间戳,所以可以使用awk简单比较string,例如:
awk 'substr($0,1,17)>="20150720 15:06:00" && substr($0,1,17)<="20150720 16:25:00"' <logfile.log
我在这里假设你的时间戳从第1列开始(从1开始编号)。 如果不是,则适当地更改,1, 。