Ich benötige eine Grep-Ausgabe mit Kontext, Farbe und Leerzeilen als Gruppentrennzeichen. In dieser Frage habe ich gelernt, wie man benutzerdefinierte group-separator
Befehle definiert , und ich habe meinen grep-Befehl folgendermaßen erstellt:
grep --group-separator="" --color=always -A5
Das Gruppentrennzeichen ist jedoch nicht leer, sondern enthält weiterhin den Farbcode (dh [[36m[[K[[m[[K
). Das liegt daran, dass ich benutze --color=always
. Aber ich brauche Farbe in meinem grep-Befehl, und ich brauche ein Trennzeichen als Leerzeile (für die weitere Verarbeitung)
Wie kann ich diese beiden Bedingungen kombinieren?
--color=always
die Übereinstimmung haben, wird mit Farbe gedruckt, und wenn Sie--group-separator=""
die leere Zeichenfolge festgelegt haben, wird nach Ihrer übereinstimmenden Gruppe eine leere Zeile angezeigt. Bitte versuchen Sie es noch einmal und lassen Sie die--group-separator=""
Zeichenfolge leer, nicht eine bestimmte Farbe. Erklären Sie dann, was nicht funktioniert.od -c
, um die verborgenen Zeichen in den leeren Zeilen zu sehen.od
.Antworten:
Wenn Sie die
GREP_COLORS
Umgebungsvariable verwenden, können Sie für jede Übereinstimmungsart bestimmte Farben steuern.man grep
erklärt die Verwendung der Variablen.Der folgende Befehl gibt eine farbige Übereinstimmung aus, aber nichts in der Zeile, die die Gruppe trennt, nur eine leere Zeile. Durchgeströmt sehen
od
Sie die Farbe vor und nach dem Spiel, aber nur\n\n
bei der Gruppentrennung.Durch Deaktivieren der
se
Komponente wird das Drucken von Farben im Gruppentrennzeichen unterdrückt.Da in meinem obigen Beispiel alle Standardwerte für
GREP_COLORS
Folgendes verwendet wurden, funktioniert dies auch.Wenn Sie keine
bash
ähnliche Shell verwenden, müssen Sie möglicherweiseGREP_COLORS
zuerst exportieren .quelle
Persönlich mache ich das mit Perl, nicht
grep
. Ich habe ein kleines Skript, das ein bestimmtes Muster farblich hervorhebt:Wenn Sie dies in Ihrem Pfad als speichern,
color
können Sie die gewünschte Ausgabe erhalten, indem Sie ausführenAuf diese Weise
grep
färbt das Skript die Übereinstimmungen für Sie ein und Sie können festlegen, dass keine Farben verwendet werden sollen, um dieses Problem zu vermeiden.quelle