Log-Einträge filtern und zählen

This forum was archived to /woltlab and is now in read-only mode.
  • Hi,


    ich habe eine Log-Datei welche wie folgt aufgebaut ist:


    Code
    1. Nov 1 00:00:10 srvname daemon: Text mit Freizeichen
    2. Nov 13 00:00:10 srvname daemon: Text mit Freizeichen und suchstring


    Ich möchte aus dieser Logdatei alles Zeilen zählen welche von heute sind. Heute bekomme ich ja mit $(date +%b-%d) zusammen, allerdings habe ich 3 Probleme:
    - Die Datei besteht nach der Monatsangabe entweder aus 2 Freizeichen oder aus einem; das hängt davon ab ob das Tagesdatum im Monat 1-stellig oder 2-stellig ist; das bekomme ich mit date irgendwie nicht dargestellt
    - ich will nur den Zähler haben, also wie viele Einträge existieren welche vorne so beginnen; diese werden aber vorher nach dem Fehlertext gefiltert...
    - es sollte möglichst ein Einzeiler sein, welcher schnell durchläuft


    Mit einer while-Schleife komme ich irgendwie nicht weiter: sie benötigt sehr lange für die ca. 20.000 Zeilen und ich habe Probleme die Zeilenanzahl darzustellen...


    Wie könnte man das lösen? Ich habe schon an awk gedacht und könnte ja mit wc -l die Anzahl Zeilen schnell heraus bekommen aber ich komme nicht an das Datum so heran... :-(


    Wer kann mir einen Denkansatz geben?


    als Beispiel dachte ich mir Folgendes:

    Code
    1. cat logdatei.log | grep suchstring | grep datum | wc -l
  • Hallo Wolfgang,


    lieben Dank! Ich habs aktuell mit einem Trick gelöst: Ich gebe mit awk nur die beiden betroffenen Werte aus; und dabei lasse ich das FReizeichen verschwinden...

    Code
    1. cat logdatei.log | grep suchstring | awk '{print $1 $2}' | grep $(date +%b%d) | wc -l