Gibt es einen Befehl, mit dem bestimmte Zeichenfolgen in stdin einfach hervorgehoben werden können (mit Farben, fettem Text oder invertiertem Hintergrund), während die gesamte Zeichenfolge an stdout übergeben wird? Ich denke darüber nach , es zu bauen , aber ich würde es lieber nur verwenden, wenn es bereits existiert. Einige wünschenswerte Funktionen:
- Separate Markierungszeichenfolgen werden automatisch unterschiedlich hervorgehoben. Beispielsweise wird die erste Zeichenfolge ohne manuelle Konfiguration rot, die zweite grün und die dritte blau hervorgehoben .
- Erkennt Farbunterstützung und greift auf fett / invertiert / andere Hervorhebungsmethoden zurück, sofern diese verfügbar sind.
- Ermöglichen Sie den Abgleich von regulären Ausdrücken und Literalzeichenfolgen.
- Macht am besten etwas Kluges, wenn sich die Übereinstimmungen überschneiden, wie "foobar" und "barbar".
- Zwischen stdin und stdout wird nichts geändert, außer dass Farbcodes hinzugefügt werden.
Antworten:
Vielleicht Radovan Garabíks Generic Colouriser (grc) ? Es erwartet eine Konfigurationsdatei als Argument und arbeitet mit regulären Ausdrücken. Also nicht ganz ohne Konfiguration, aber Sie können Process Process Substitution (
<(list)
) verwenden, also auf jeden Fall ohne manuelle Konfiguration :-)quelle
grc
hat ein Hilfsskript :grcat
. Hier ist ein Beispiel für das Färben aller Großbuchstaben in Rot. Schritt 1: Richten Sie die Konfigurationsdatei ein:printf "regexp=[A-Z]\ncolours=red\n" > ~/.grc/red-caps
Schritt 2; Verwenden Sie es:echo Hello World | grcat red-caps
... Die Manpage gibt 3 Konfigurationsverzeichnisse an, die durchsucht werden, und schlägt dann vor (?), Dass die Konfigurationsdatei ein absoluter Pfad sein kann, aber diese letzte Methode zum Finden der Konfigurationsdatei funktioniert nur mit relativen Pfaden für mich (grc Version 1.3)Sed zur Rettung!
Sie können dies verbessern (da es wirklich benötigt wird), aber es funktioniert ziemlich gut.
Der Einfachheit halber akzeptiert hilight zwei Argumente (erstens die Übereinstimmung, zweitens die Farbe). In diesem Skript ist das Attribut immer fett gedruckt
Lesen Sie man console_codes (Graphic Rendition), um zu sehen, wie Farben entkommen, oder versuchen Sie dies
Die Verwendung dieser Funktion hat wichtige Nachteile:
aber das überhaupt nicht:
weil [: digit:] die Zahlen in den Escape-Abschnitten früherer Unterstützungen findet.
Etwas wie:
funktioniert immer wie ausgenommen.
Mit dem Zeitbefehl habe ich festgestellt, dass dieses Inkrement die verstrichene Zeit um vier erhöht, was nicht zu viel ist.
Sie können den Befehl sed durch einen anderen Parser ersetzen, den Sie mögen oder der Ihren Anforderungen entspricht (awk usw.)
quelle
Man kann egrep auch mit einem Muster verwenden, das mit jeder Zeile eines nicht druckbaren Zeichens übereinstimmt, wie z.
quelle
Clide funktioniert gut. Ich benutze es auf RHEL 6.2 aus dem EPEL-Repository
quelle
Wenn Ihre Version von
grep
mit Färbung geliefert wird, können Sie die Regexp-Änderung verwenden, damit grep den Text hervorhebt und auch mit jeder Zeile übereinstimmt, sodass nichts ausgeschlossen wird. Folgendes sollte den Trick tun:quelle
Wie Sie im Link erwähnt haben,
grep --color=always
funktioniert nur für ein Muster. Trotzdem glaube ich nicht, dass es ein solches Werkzeug gibt.quelle
Ich benutze http://em.readthedocs.org/ . Einfache Installation auf verschiedenen Plattformen dank Python. Einfach und funktioniert gut.
quelle
em
, formulieren Sie Ihre Antwort bitte neu, um klar zu stellen, dass Sie kein Benutzer, sondern der Autor des vorgeschlagenen Tools sind.