如何在日誌檔案中搜尋特定模式並計算匹配數?

如何在日誌檔案中搜尋特定模式並計算匹配數?

在一個非常大的日誌檔案中,我有以下條目:

進入 somecompany.somepackage.datacontrol.provider.DataProvider@ 的流程c37ae61

條目之間唯一的差異是之前@和之後的字串.release()(粗體部分)。

還有其他類似以下的條目需要在搜尋中丟棄:

進入 somecompany.somepackage.datacontrol.provider.DataProvider@ 的流程c37ae61.somethingelse()

所以我的搜尋模式應該以.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

相關內容