在日志文件中查找某个日期与其他日期之间的所有内容

时间:2018-01-09 08:21:02

标签: linux bash logfile

我有一个如下所示的日志文件:

01/09/18 07:04:37.020   ********

01/09/18 07:04:37.020   ********

01/09/18 07:04:37.020   ********

01/09/18 07:04:37.020   ********

01/09/18 07:04:37.020   ********

01/09/18 07:04:37.020   ********

我需要打印01/08/18 22:53:2801/08/18 23:12:19之间的所有行,重要的一点是这些日期不必存在于我的日志文件中。

我尝试的是以下内容,但它们没有效果:

awk -F'[]]|[[]' \ '$0 ~ /^\[/ && $2 >= "01/08/18 22:53:28" { p=1 }  $0 ~ /^\[/ && $2 >= "01/08/18 23:12:19" { p=0 } p { print $0 }' manager.log.6.gz

和sed命令

1 个答案:

答案 0 :(得分:0)

如果您有可用的gawk,则可以使用mktime功能。您的时间戳不是yyyy-MM-dd hh:mm:ss格式,因此您无法通过字符串直接比较(>= or <=)。

您可以将给定边界转换为时间戳,并为每一行提取并转换时间戳部分,进行比较以确定是否应该打印该行。

或者您必须将日期时间字符串格式更改为YYYY-MM-DD HH...才能进行字符串比较。

阅读关于mktime部分的gawk手册页,它相对容易使用。