grep log4j在Java中的某个时间戳之后的行

时间:2016-07-29 15:09:18

标签: java bash sed grep log4j

我必须计算log4j文件中出现的某些字符串的出现次数。我有一个开始日期,我想在测试期间从Java类开始grep(可能是sedawk?)。

即使我不知道从Runtime.getRuntime().exec(...)命令捕获grep结果与读取和解析(通过正则表达式和字符串操作)当前log4j文件是否更好,我不知道#39;知道如何grep这样的文件:

2016-07-29 15:13:08,725:  INFO [main] .....
2016-07-29 15:13:08,817:  INFO [main] ....
2016-07-29 15:13:08,901:  INFO [main] ...

但仅限于2016-07-29 15:13:08,818之后

提前致谢!

1 个答案:

答案 0 :(得分:0)

如果你有一个完全匹配你想要除以输出,根据another question here你可以使用sed只输出该时间戳之后和之后的行。找到要打破的完全匹配可能意味着逐步使您的时间戳更宽松,例如删除最后一个字符,直到你得到一个匹配/匹配,然后解析那些匹配,以决定哪个是第一个匹配。

如果你想在bash中这样做,请考虑this question;专门将日期转换为unix时间戳,然后比较结果值。其余的应该是直截了当的;同样在Java中,提取日期并比较它们不应该太具有挑战性。除非您拥有学习经验的带宽,否则请使用您更熟悉的语言。