我有一个如下所示的日志文件:
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:28
到01/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命令
答案 0 :(得分:0)
如果您有可用的gawk,则可以使用mktime
功能。您的时间戳不是yyyy-MM-dd hh:mm:ss
格式,因此您无法通过字符串直接比较(>= or <=
)。
您可以将给定边界转换为时间戳,并为每一行提取并转换时间戳部分,进行比较以确定是否应该打印该行。
或者您必须将日期时间字符串格式更改为YYYY-MM-DD HH...
才能进行字符串比较。
阅读关于mktime
部分的gawk手册页,它相对容易使用。