In einer sehr großen Protokolldatei habe ich Einträge wie:
FLOW EINGABE somecompany.somepackage.datacontrol.provider.DataProvider@c37ae61.freigeben()
Der einzige Unterschied zwischen den Einträgen besteht in der Zeichenfolge nach @
und davor .release()
(dem fettgedruckten Teil).
Es gibt weitere Einträge wie die folgenden, die bei der Suche verworfen werden müssen:
FLOW EINGABE somecompany.somepackage.datacontrol.provider.DataProvider@c37ae61.etwas anderes()
Mein Suchmuster sollte also mit enden.release()
.
Wie kann ich die Anzahl solcher Vorkommen in der Protokolldatei ermitteln (die Anzahl der übereinstimmenden Zeilen) und auch alle übereinstimmenden Muster ausdrucken?
PS: Ich verwende eine Linux-Umgebung.
Antwort1
Ich denke, grep -c
die Option ist exklusiv - es ist nicht möglich, die Option -c mit einer anderen Option zu kombinieren, um übereinstimmende Zeilen auszugebenUNDeine Zählung. Wenn Sie also tee verwenden, werden die Übereinstimmungen ausgegebenUNDSchreiben Sie die Übereinstimmungen in eine temporäre Datei und zählen Sie dann die Zeilen in der Datei.
grep 'FLOW ENTERING.*release()' k | tee /tmp/grep.tmp && wc -l /tmp/grep.tmp
Antwort2
Sie können verwenden
grep '.release()' file|wc -l