Beim Anzeigen der Apache-Protokolldateien werden viele Fehlermeldungen wiederholt. Ich möchte herausfinden, welche Fehlermeldungen am häufigsten und welche einzigartig sind.
Ich hätte gerne ein einfaches Skript, mit dem ich die verschiedenen eindeutigen Zeilen zählen kann.
Ich kenne Perl / Python / etc., Aber ich würde es vorziehen , integrierte Tools wie verwenden cut
/ find
/ grep
/ sed
usw.
Ich kann eine einfache Liste von Einträgen mit bekommen sed
. Im Folgenden wird eine Liste eindeutiger Fehlermeldungen angezeigt:
$ sed -e "s/\[.*\]\([^:]*\)\(.*\)/\1/" error.sml.log | sort -u
Apache configured -- resuming normal operations
client denied by server configuration
Digest
File does not exist
request failed
Dies zählt die Anzahl der Vorkommen. Es ist einfach nicht so nützlich, da es nicht zeigt, worauf sich die Zählungen beziehen:
$ sed -e "s/\[.*\]\([^:]*\)\(.*\)/\1/" error.sml.log | sort -u | xargs -I{} grep -oc {} error.sml.log
1
3886
2
6091
20
Ich möchte, dass die Ausgabe so aussieht:
1 Apache configured -- resuming normal operations
3886 client denied by server configuration
2 Digest
6091 File does not exist
20 request failed