Grep日志文件大于时间戳



我有一个unix日志文件(application.log),它在开始时有带时间戳的日志。我需要在此日志文件中搜索大于时间2014-03-20 14:05:54的模式"发送"。

2014-03-20 14:05:54,038 [NfxAgent....
2014-03-20 14:05:54,164 [NfxAgent....
2014-03-20 14:05:54,298 [NfxAgent....
2014-03-20 14:05:54,414 [NfxAgent....
2014-03-20 14:05:54,787 [NfxAgent....

我在测试数据中添加了2条记录,以确保这确实有效:

2014-03-19 14:05:53,999 [NfxAgent....
2014-03-20 14:05:53,164 [NfxAgent....

但我不认为你可以使用grep。下面是一个awk解决方案:

$ grep sent  grepTest_20140321.txt|  awk '$0 > "2014-03-20 14:05:54"' 
2014-03-20 14:05:54,038 [NfxAgent....
2014-03-20 14:05:54,164 [NfxAgent....
2014-03-20 14:05:54,298 [NfxAgent....
2014-03-20 14:05:54,414 [NfxAgent....
2014-03-20 14:05:54,787 [NfxAgent....

编辑

"如果我们需要以与2014-03-21 10:04:14 . 018相同的格式指定结束时间该怎么办?"

我已经添加了3行测试数据来确认第二种情况:

2014-03-21 10:04:14,017 [NfxAgent....
2014-03-21 10:04:14,018 [NfxAgent....
2014-03-22 10:04:14,999 [NfxAgent....

结果显示在指定范围内的一条新记录。

 awk '$0 ~ "sent" && $0 > "2014-03-20 14:05:54" && $0 < "2014-03-21 10:04:14,018"'    grepTest_20140321.txt
2014-03-20 14:05:54,038 [NfxAgent....
2014-03-20 14:05:54,164 [NfxAgent....
2014-03-20 14:05:54,298 [NfxAgent....
2014-03-20 14:05:54,414 [NfxAgent....
2014-03-20 14:05:54,787 [NfxAgent....
2014-03-21 10:04:14,017 [NfxAgent....

IHTH

尝试:

sed -n '/^2014-03-20 14:05:54/,$ {/sent/p;}' file

注意:这假设日志文件中至少有一行实际以2014-03-20 14:05:54开头,并且可以包含从该秒开始的匹配。

如果不能保证存在这样一条线,则@shellter的awk方法更优;把它们放在一起:

awk '$0 > "2014-03-20 14:05:54" && $0 ~ "sent"' file

最新更新