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您是对的,在这种情况下,按字母顺序将起作用。我的疏忽