如何在日志文件中搜索特定模式并计算匹配的数量?

如何在日志文件中搜索特定模式并计算匹配的数量?

在一个非常大的日志文件中我有如下条目:

流程进入 somecompany.somepackage.datacontrol.provider.DataProvider@c37ae61。发布()

条目之间唯一的变化是之后@和之前的字符串.release()(加粗部分)。

还有其他条目需要从搜索中丢弃,例如:

流程进入 somecompany.somepackage.datacontrol.provider.DataProvider@c37ae61.其他东西()

所以我的搜索模式应该以.release()

我如何才能知道日志文件中这种情况出现的次数(匹配的行数)并打印出所有匹配的模式?

PS:我使用的是Linux环境。

答案1

我认为grep -c选项是排他性的 - 不可能将 -c 选项与另一个选项组合来输出匹配的行计数。因此使用 tee 输出匹配项将匹配项写入临时文件,然后计算文件中的行数。

grep 'FLOW ENTERING.*release()' k  | tee /tmp/grep.tmp && wc -l /tmp/grep.tmp

答案2

您可以使用 grep '.release()' file|wc -l

相关内容