![Multitail-Filterung auf viele per Platzhalter übergebene Dateien anwenden](https://rvso.com/image/164737/Multitail-Filterung%20auf%20viele%20per%20Platzhalter%20%C3%BCbergebene%20Dateien%20anwenden.png)
multitail
verfügt über einen netten, auf regulären Ausdrücken basierenden Filtermechanismus, der in der Manpage und im Online-Handbuch beschrieben wird. Beide Quellen geben an, dass Protokollzeilen, die einem bestimmten regulären Ausdruck entsprechen, mit dem folgenden -ev
Schalter von der Ausgabe ausgeschlossen werden können:
multitail -ev "ignorelinescontainingthis" /var/log/whatever.log -ev "alsoignorethis" /var/log/another.log
Dies scheint jedoch nicht zum Filtern vieler Protokolldateien zu funktionieren, die mit Platzhaltern übergeben werden:
multitail -ev "thisdoesntwork" /var/log/myservice*.log
Gibt es eine Möglichkeit, dies zum Laufen zu bringen?
Zu Analysezwecken habe ich den -ec
Schalter ausprobiert (der Regex-Übereinstimmungen hervorhebt) und es stellte sich heraus, dass der Filter nur auf die erste Datei in der Platzhalterliste angewendet wird, aber auf keine der anderen.
Antwort1
Meinen Kommentar in eine Antwort umwandeln.
Die Manpage fürmultitail
definiert die -e
Option wie folgt:
-e
Verwenden Sie den nächsten regulären Ausdruck für die folgendenDatei.
Der reguläre Ausdrucksfilter wird also nur auf die unmittelbar folgende Datei angewendet. Bei Verwendung von Shell-Globs würde dies dazu führen, dass der Filter nur auf die erste Datei in der erweiterten Dateiliste angewendet wird.
Um den regulären Ausdrucksfilter auf alle Dateien anzuwenden, -E
muss stattdessen die Option verwendet werden:
-E
Verwenden Sie den nächsten regulären Ausdruck für die folgendenDateien.
Die -v
Option, die den angegebenen regulären Ausdruck negiert, sollte für beide Optionen auf die gleiche Weise funktionieren.