Eine Lösung zum Einfärben aller Arten von Text, nicht nur von Protokolldateien, ist das Python-Tool ' colout '.
pip install colout
myprocess | colout REGEX_WITH_GROUPS color1,color2... [attr1,attr2...]
Wobei jeder Text in der Ausgabe von 'myprocess', der mit Gruppe 1 des regulären Ausdrucks übereinstimmt, mit Farbe 1, Gruppe 2 mit Farbe 2 usw. gefärbt wird.
Zum Beispiel:
tail -f /var/log/mylogfile | colout '^(\w+ \d+ [\d:]+)|(\w+\.py:\d+ .+\(\)): (.+)$' white,black,cyan bold,bold,normal
dh die erste reguläre Ausdrucksgruppe (parens) stimmt mit dem Anfangsdatum in der Protokolldatei überein, die zweite Gruppe stimmt mit einem Python-Dateinamen, einer Zeilennummer und einem Funktionsnamen überein, und die dritte Gruppe stimmt mit der Protokollmeldung überein, die danach kommt. Das sieht so aus:
Beachten Sie, dass Linien oder Teile von Linien, die mit keinem meiner regulären Ausdrücke übereinstimmen, weiterhin als Echo angezeigt werden. Dies entspricht also nicht 'grep --color' - nichts wird aus der Ausgabe herausgefiltert.
Offensichtlich ist dies flexibel genug, dass Sie es mit jedem Prozess verwenden können, nicht nur mit dem Tailing von Protokolldateien. Normalerweise ziehe ich jedes Mal, wenn ich etwas färben möchte, einen neuen Regex im Flug auf. Aus diesem Grund ziehe ich Colout jedem benutzerdefinierten Tool zum Färben von Protokolldateien vor, da ich nur ein Tool lernen muss, unabhängig davon, was ich färbe: Protokollierung, Testausgabe, Hervorheben von Codeausschnitten in der Syntax im Terminal usw.
sed
: stackoverflow.com/a/14691971/52074