(Ich habe diese Frage zum Stackoverflow gestellt, aber hier ist es vielleicht besser ...)
Ich muss einige gigantische Protokolldateien auf einem Linux-System durchlesen. Es gibt viel Unordnung in den Protokollen. Im Moment mache ich so etwas:
cat logfile.txt | grep -v "IgnoreThis\|IgnoreThat" | less
Aber es ist umständlich - jedes Mal, wenn ich einen weiteren Filter hinzufügen möchte, muss ich less
die Befehlszeile beenden und bearbeiten. Einige der Filter sind relativ kompliziert und können mehrzeilig sein.
Ich möchte eine Möglichkeit haben, Filter beim Lesen des Protokolls anzuwenden und diese Filter irgendwo zu speichern.
Gibt es ein Tool, das dies für mich tun kann? Ich kann keine neue Software installieren, also ist es hoffentlich etwas, das bereits installiert ist - z. B. weniger, vi, etwas in einer Python- oder Perl-Bibliothek usw.
Das Ändern des Codes, der das Protokoll generiert, um weniger zu generieren, ist keine Option.
vi
möglich ist. Jemand hat Multitail auf SO vorgeschlagen, sieht gut aus, aber ich habe es nicht installiert.Antworten:
sollten Sie sekundäre Filter ausführen und Skripte zählen, um sie zu analysieren
es immer eine gute Idee, die gefilterte Ausgabe zu speichern (anstatt zu versuchen, sie sofort anzuzeigen).
Es funktioniert besser, wenn Ihre Filter die tatsächliche Datei um einen großen Betrag reduzieren
grep
','sed
','AWK
'reicht normalerweise aus, um die Textprotokolldatei sehr gut zu verarbeiten.Ich habe mit diesen Dingen häufig Protokolldateien in der Größenordnung von 10 GB verarbeitet.
Mit diesen Dingen können Sie in '
bash scripts
' Ihre eigenen Werkzeuge erstellen.vim
', es kann auch große Dateien verarbeiten (aber es wird einige Zeit dauern, also gib ihm gefilterte Dateien)quelle
Sie werden dies sicherlich nicht installiert haben, aber wenn dies eine normale Sache sein soll, müssen Sie sich möglicherweise mit Splunk befassen . Splunk dient zum Indizieren großer Datenmengen wie dieser, damit Sie leichter finden, wonach Sie suchen.
quelle