Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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
Php 如何获取两个时间范围之间的所有日志行?_Php_Regex_Awk_Grep - Fatal编程技术网

Php 如何获取两个时间范围之间的所有日志行?

Php 如何获取两个时间范围之间的所有日志行?,php,regex,awk,grep,Php,Regex,Awk,Grep,我的日志文件中有这样的行: 2017/10/18 00:00:00 [WARNING] 2017/10/18 00:10:00 [WARNING] 2017/10/18 00:20:00 [WARNING] 2017/10/18 01:00:00 [WARNING] 2017/10/18 01:10:00 [WARNING] 2017/10/18 01:20:00 [WARNING] 例如,我想获取2017/10/18 00:15:00和2017/10/18 01:15:00之间的所有行 我一

我的日志文件中有这样的行:

2017/10/18 00:00:00 [WARNING]
2017/10/18 00:10:00 [WARNING]
2017/10/18 00:20:00 [WARNING]
2017/10/18 01:00:00 [WARNING]
2017/10/18 01:10:00 [WARNING]
2017/10/18 01:20:00 [WARNING]
例如,我想获取
2017/10/18 00:15:00
2017/10/18 01:15:00
之间的所有行


我一直在尝试使用grep和regex来解决这个问题,但我找不到解决方案。我已经阅读了几个解决方案()并了解了awk。但似乎awk也需要正则表达式模式?

我会像这样使用
awk

awk '$1" "$2>="2017/10/18 00:15:00" && $1" "$2<="2017/10/18 01:15:00"' file

awk'$1”“$2>=“2017/10/18 00:15:00”&&&$1”“$2=begin&&$1”“$2我会像这样使用
awk

awk '$1" "$2>="2017/10/18 00:15:00" && $1" "$2<="2017/10/18 01:15:00"' file

awk'$1”“$2>=“2017/10/18 00:15:00”&&$1”“$2=开始和$1”“$2为什么不将每行的日期时间转换为
datetime
对象,然后对
datetime
对象进行测试,看看它是否符合范围?这不需要使用正则表达式(除了提取日期时间之外),而且它更优雅一点,你在用什么语言回答问题?unix/linux shell或PHP上的东西?您的问题中有相互冲突的标记…@Matt_S,我在php脚本中使用exec(),所以我想这两种解决方案都可以。@ctwheels:注意,您不需要在这里转换任何内容,因为日期和时间是按照“字母”顺序编写的,并且每个值都用零填充。(YYYY/MM/DD HH:MM:SS)@casimirithippolyte您是对的,在这种情况下,按字母顺序将起作用。我的疏忽为什么不将每一行的datetime转换成
datetime
对象,然后对
datetime
对象进行测试,看看它是否符合范围?这不需要使用正则表达式(除了提取日期时间之外),而且它更优雅一点,你在用什么语言回答问题?unix/linux shell或PHP上的东西?您的问题中有相互冲突的标记…@Matt_S,我在php脚本中使用exec(),所以我想这两种解决方案都可以。@ctwheels:注意,您不需要在这里转换任何内容,因为日期和时间是按照“字母”顺序编写的,并且每个值都用零填充。(YYYY/MM/DD HH:MM:SS)@casimirithippolyte您是对的,在这种情况下,按字母顺序将起作用。我的疏忽