Awk 在两个时间段之间获取日志中的所有文本

Awk 在两个时间段之间获取日志中的所有文本,awk,Awk,请帮助我在两个时间段之间获取日志中的所有文本 日志文件示例 2014-10-23 00:24:37 .....some data 2014-10-23 00:25:37......some data 2014-10-23 00:26:37.......some data Error code HO5006 2014-10-23 00:27:37...some data 我正在使用下面的awk命令获取2014-10-23 00:25:37和2014-10-23 00:27:37之间的文本: aw

请帮助我在两个时间段之间获取日志中的所有文本

日志文件示例

2014-10-23 00:24:37 .....some data
2014-10-23 00:25:37......some data
2014-10-23 00:26:37.......some data
Error code HO5006
2014-10-23 00:27:37...some data
我正在使用下面的
awk
命令获取
2014-10-23 00:25:37和2014-10-23 00:27:37之间的文本:

awk '$0>=from && $0<=to' from="$1" to="$2" logfile 
但我的预期产出应该是

2014-10-23 00:26:37.......some data
Error code HO5006
2014-10-23 00:27:37...some data

awk中可能有一种更优雅的方法来实现这一点,但这将实现以下目的:

awk 'BEGIN {capture="no"};{if ($0>=from) capture="yes"} {if (capture=="yes") print $0} {if ($0<=to) capture="no"};' from="$1" to="$2" logfile

awk'BEGIN{capture=“no”};{if($0>=from)capture=“yes”}{if(capture==“yes”)print$0}{if($0问题是
错误代码HO5006
字符串大于日期字符串(几乎任何以无数字开头的字符串)。因此,如果传递了起始日期,则应打印与日期模式不匹配的行

因此,我的建议是:

awk --posix -v from="2014-10-23 00:26:37" -v to="2014-10-23 00:27:37" '
  {dt=$1" "$2}
  dt~/^[0-9]{4}-/{if(dt>=from)++s;if(dt>to)exit}
  s
' << EOT
2014-10-23 00:24:37 .....some data
2014-10-23 00:25:37 ......some data
2014-10-23 00:26:37 .......some data
Error code HO5006
2014-10-23 00:27:37 ...some data
2014-10-23 00:28:37 ...some data
2014-10-23 00:29:37 ...some data
EOT

我希望这能有所帮助!

很抱歉,因为我不在城里,所以回复晚了。我尝试了u提供的soln,效果很好……非常感谢:)@jayshah:如果我能帮上忙,我很高兴!请更新工作解决方案并接受您喜欢的解决方案!很抱歉,因为我不在城里,所以回复太晚了。我已经尝试了u提供的解决方案,效果很好…非常感谢:)
awk --posix -v from="2014-10-23 00:26:37" -v to="2014-10-23 00:27:37" '
  {dt=$1" "$2}
  dt~/^[0-9]{4}-/{if(dt>=from)++s;if(dt>to)exit}
  s
' << EOT
2014-10-23 00:24:37 .....some data
2014-10-23 00:25:37 ......some data
2014-10-23 00:26:37 .......some data
Error code HO5006
2014-10-23 00:27:37 ...some data
2014-10-23 00:28:37 ...some data
2014-10-23 00:29:37 ...some data
EOT
2014-10-23 00:26:37 .......some data
Error code HO5006
2014-10-23 00:27:37 ...some data