我有一个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....
答案 0 :(得分:7)
我在测试数据中添加了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....
结果显示您指定范围内的一条新记录。
x000294@nardhl011 1220>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
答案 1 :(得分:3)
尝试:
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