在一个非常大的日志文件中我有如下条目:
流程进入 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