我需要从具有以下格式的日志文件中过滤消息:
2013-03-22T11:43:21.817078+01:00 INFO log msg 1...
...
2013-03-22T11:44:32.817114+01:00 WARNING log msg 2...
...
2013-03-22T11:45:45.817777+01:00 INFO log msg 3...
...
2013-03-22T11:46:59.547325+01:00 INFO log msg 4...
...
(其中...
表示“更多消息”)
必须根据时间范围进行过滤。
这是bash脚本的一部分,此时代码中的时间范围存储为$start_time
和$end_time
。例如:
start_time = "2013-03-22T11:45:20"
end_time = "2013-03-22T11:45:50"
请注意, 现在,我几乎确信我需要一个Python脚本来进行过滤,但我宁愿使用grep(或awk,或任何其他工具),因为它应该运行得更快(日志文件很大) )。 有什么建议吗?$start_time
或$end_time may
的 完全 值可能永远不会出现在日志文件中;但是在时间范围内 [$start_time, $end_time]
会有几条消息,这些消息是我正在寻找的。 p>
答案 0 :(得分:1)
根据你问题中的日志内容,我认为awk oneliner可能有所帮助:
awk -F'.' -vs="$start_time" -ve="$end_time" '$1>s && $1<e' logfile
注意:这是过滤内容,不包括开始和结束时间。
答案 1 :(得分:0)
$ start_time="2013-03-22T11:45:20"
$ end_time="2013-03-22T11:45:50"
$ awk -F'.' '$1>s&&$1<e' s=$start_time e=$end_time file
2013-03-22T11:45:45.817777+01:00 INFO log msg 3...