Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 特定时间段的grep日志文件_Python_Bash_Awk_Grep - Fatal编程技术网

Python 特定时间段的grep日志文件

Python 特定时间段的grep日志文件,python,bash,awk,grep,Python,Bash,Awk,Grep,我需要从具有以下格式的日志文件中筛选消息: 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

我需要从具有以下格式的日志文件中筛选消息:

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\u time
$end\u time
。例如:

start_time = "2013-03-22T11:45:20"
end_time   = "2013-03-22T11:45:50"
请注意,
$start\u time
$end\u time的精确值可能永远不会出现在日志文件中;然而,在时间范围内会有几条消息,我正在寻找这些消息

现在,我几乎确信我需要一个Python脚本来进行过滤,但我宁愿使用grep(或awk,或任何其他工具),因为它应该运行得更快(日志文件很大)

有什么建议吗?

$start\u time=“2013-03-22T11:45:20”
$ 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...
$end_time=“2013-03-22T11:45:50” $awk-F.“$1>s&$1
$start\u time=“2013-03-22T11:45:20”
$end_time=“2013-03-22T11:45:50”

$awk-F'.''$1>s&&$1根据您问题中的日志内容,我认为awk oneliner可能会有帮助:

awk -F'.' -vs="$start_time" -ve="$end_time" '$1>s && $1<e' logfile

awk-F'.-vs=“$start_time”-ve=“$end_time””$1>s&&$1根据您问题中的日志内容,我认为awk oneliner可能有助于:

awk -F'.' -vs="$start_time" -ve="$end_time" '$1>s && $1<e' logfile

awk-F'.-vs=“$start\u time”-ve=“$end\u time””$1>s&&1如果
start\u time
是shell变量,请在为其赋值时删除
=
前后的空格。(与
结束时间
相同)如果
开始时间
是shell变量,请在为其赋值时删除
=
前后的空格。(与结束时间相同)