Ich denke, was Sie suchen, ist eine Art von sed
Skript, das die Wörter umgibt, die Sie mit ANSI Color Escape-Sequenzen auswählen. (hmm ... schau mal).
EDIT OK, bekam es:
Hier ein Beispiel ist "Hallo" in Dunkelrot zur Ausgabe:
echo -e "\033[31mHello\033[0m"
Was geschieht? Zuerst verwende ich echo -e
, so dass echo
die Schrägstriche nicht in Bildschirm Schrägstriche konvertiert, sondern liest die Escape-Sequenz von \033
als ein einzelnes Escapezeichen. Dies ist eigentlich nur 33 in Oktal, das ist 27 (die Ordnungszahl für die ESC-Taste).
Also, was wirklich auf dem Bildschirm gesendet wird, ist so etwas wie:
<ESC>[32mHello<ESC>[0m
Welches ist die ANSI-Display als 0m
Hallo ‚und führen Sie dann den Befehl„erste 32m
, Ausgabe tun Sie den Befehl‘interpretiert.
In diesem Fall bedeutet der Befehl 32m
"setze die Vordergrundfarbe auf 2", und da Farbe # 2 dunkelrot ist, wird der "Stift", der vom Terminal verwendet wird, nun dunkelrot sein, was von diesem Punkt aus bedeutet Danach wird der gesamte Text angezeigt, der auf dem Bildschirm angezeigt wird k rot.
Wenn wir fertig sind mit der Ausgabe des Textes, der rot sein soll, möchten wir die Farben zurücksetzen, also rufen wir den Befehl 0m
auf, der die Farben auf normal zurücksetzt.
Für eine Liste aller Escape-Codes, schauen Sie in [http://en.wikipedia.org/wiki/ANSI_escape_code Wikipedia] oder einfach google dafür.
Also alle Ihre sed Skript muss die Wörter, die Sie wählen, mit den Worten umgeben von den Farben zu ersetzen. Zum Beispiel das Wort „Februar“ in /var/log/messages
zu ersetzen, gehen Sie wie folgt vor:
tail /var/log/messages | sed -e "s/Feb/\\o033[31m&\\o033[0m/"
(Man könnte dies tatsächlich als root zu tun haben, zu lesen /var/log/messages
)
Alles sed
tat, war Suche nach dem Wort "Feb" und umgeben Sie es mit der gleichen Escape-Sequenz wie wir oben verwendet haben.
Man könnte es erweitern mehrere Wörter zu färben:
tail /var/log/messages | sed -e "s/\(Feb\|Mar\|Apr\)/\\o033[31m&\\o033[0m/g"
welche Farbe "Februar" würde "Mar", "April" - jeweils in Dunkelrot.
Ich hoffe, dies gibt Ihnen eine Idee, wie Sie tun können, was Sie brauchen!
ein Problem: die Option -E verursacht einen Fehler? – nickf
Sie müssen -E mit -e ersetzen und alle Klammern entfernen. Tail -f-Datei | sed -e "s/\ ([0-9] + \)/$ ROT \ 1 $ RESET/g; s/\ (\" [^ \ "] * \" \)/$ GELB \ 1 $ RESET/g " – itsadok
Das -e ist nicht unbedingt notwendig. -E ist eine Option, um erweiterte Regexps zu verwenden, so dass Sie nicht aus Klammern entkommen müssen, aber anscheinend ist -E nicht auf allen Versionen von sed verfügbar. –