【发布时间】:2014-08-07 23:04:36
【问题描述】:
所以我试图通过一个日志文件计数行,其中包含过去 30 分钟内的时间戳和一个单词。 我有用于查找时间戳的工作代码:
grep "^$(date -d -30minute +'%Y-%m-%d %H')" /path/to/the/derp | wc -l
一个示例日志文件可以是:
2014-08-07 00:00:03.001 000 GoogleGeoCodeService blah blah blah
2014-08-07 00:00:01.001 000 carrier check java.net.SocketTimeoutException
如果两个条目都发生在最后半小时内,我如何计算第二行而不是第一行?我试过只添加另一个管道,但我从来没有得到正确的结果:
grep "^$(date -d -30minute +'%Y-%m-%d %H')" /path/to/the/derp | wc -l | grep -i "exception"
【问题讨论】:
-
date技巧仅在当前分钟数大于 30 时才有效。 -
@choroba Huh 我在实践中没有注意到这一点,但谢谢。您对其他方法有什么建议吗?
-
我可能会使用 Perl。
-
要获取第二行,请在再次调用
grep之前删除| wc -l,然后重试。您正在使用wc -l将输出减少到一个数字。 -
@DavidC.Rankin 好的有道理。我应该做两个 greps 然后减少到一个数字?我想要符合时间戳并包含“异常”而不是行本身的行数。我只是想获得一些比赛。