Ich habe ein Programm, das eine Ausgabe ausgibt, die mir stdout
gefällt:
[OK] Something is ok
[OK] Something else is also ok
[FAIL] This does not look good
[FAIL] Neither does this
[OK] At least this is fine
Um die Fehler in der Ausgabe leichter zu erkennen, möchte ich die Vorkommen des Schlüsselworts FAIL
mit Rot markieren, ohne die anderen Nachrichten zu verwerfen. Es wäre schön, wenn ich die OK
Keywords auch mit grün markieren könnte :).
Wenn Sie eine Pipe für ausführen, egrep --color FAIL
werden nur die Zeilen angezeigt, in denen das FAIL
Schlüsselwort vorhanden ist.
grep
Lösung finden Sie unter unix.stackexchange.com/a/34322tail -f
undawk
Magie, bin ich gut zu gehen =)Antworten:
Basierend auf
manatwork
dem brillanten kleinen "oder nichts" -Hack in der anderen Frage, biete ich dies an, was die Fähigkeit hinzufügt, zwei Hervorhebungsfarben zu erhalten :Das heißt, Sie durchlaufen
grep
die Ausgabe zweimal mit jeweils einer anderenGREP_COLORS
Umgebungsvariablen.Der Wert '01; 32 'bedeutet "fett grün" und der andere bedeutet "fett rot". Weitere Ideen finden Sie im Wikipedia- Artikel zu ANSI-Codes .
Leider erfordert dies GNU grep Version 2.5.3 oder höher. Ältere Versionen von GNU grep unterstützten einen anderen Farbmechanismus, aber diese Versionen haben einen Fehler, der Sie daran hindert, die Funktion in einer Pipeline mehr als einmal zu verwenden. BSD grep emuliert den älteren GNU grep-Färbemechanismus und wird in einer Pipeline zweimal funktionieren, aber es schreit wegen des
manatwork
Hacks nach "leerem Unterausdruck" .Sie können die umgekehrten Schrägstriche am Ende der ersten beiden Zeilen entfernen, um eine einzelne Zeile zu erstellen. Ich habe es hier nur aus Gründen der Klarheit und zum Spielen mit dem SE-Seitenformat aufgeteilt.
quelle
GREP_COLORS
, das alt genug ist, dass es keinen Plural unterstützt. Es wird nur die ältereGREP_COLOR
Methode verwendet, und diese Methode enthält einen Fehler, der verhindert, dass sie das Richtige tut. Wenn Sie den zu verwendenden BefehlGREP_COLOR=32
und einen solchen ändern, ändert sich die Hervorhebungsfarbe nur für die erste Übereinstimmung. Wenn Sie das Ergebnis weiterleitenhexdump -c
, können Sie feststellen, dass das Hinzufügen des zweitenegrep
Befehls zwar etwas bewirkt, jedoch nicht für ANSI zulässig ist. Fazit: Sie müssen ein Upgrade durchführengrep
, damit dies funktioniert.GREP_COLOR
(singulären) Fehler behoben, obwohl das Feature veraltet war, sobald es ersetzt wurde.Sie können hierfür Multitail oder ccze verwenden. Beide erlauben es Configs, passende Regexps und Farben zu beschreiben.
quelle
Basierend auf der Antwort von Warren Young habe ich dieses Python-Skript geschrieben , das das Gleiche eleganter und mit viel weniger Tippaufwand ausführt. So würden Sie dieses Skript verwenden:
quelle