Verwenden Sie --color=always.
grepErkennt, ob die Ausgabe in eine Pipe (oder Datei) erfolgt. Sie möchten meistens keine Farben, wenn die Ausgabe in einer Datei erfolgen soll - das sind Escape-Sequenzen für das Terminal. Normalerweise:
foo ^[[01;31m^[[Kbar^[[m^[[K
von zB:
grep pattern file > result
Zum Überschreiben verwenden --color=always.
grep --color=always pattern file | ...
Beispiel:
Datei haben:
ID=111;Year=2013;foo=bar
ID=222;Year=2013;foo=baz
Dann
grep --color=always ID file | grep --color=always 2013 | grep foo
würde färben ID, 2013und foo.
grep --color=always ID file | grep 2013 | grep foo
würde färben IDund foo, aber nicht 2013.
1 Wichtig: Sie müssen auch bedenken, dass die hinzugefügte Unordnung von Farben an den nächsten Befehl in der Kette übergeben wird. Sobald der Ausweis gefärbt ist, können Sie ihn (mit Leichtigkeit) nicht mehr zuordnen, zID=111.
Manchmal möchte man vielleicht Terminalfarben in einer Datei haben . Versuchen Sie zB
grep --color=always foo file > result
cat result
Die resultierende Datei wäre jedoch nur sehr eingeschränkt portabel.
Die Färbung selbst ist auch eine Erweiterung.
Wie von der guten @slm erwähnt , können Sie hinzufügen:
export GREP_OPTIONS="--color=always"
zu Ihrem .bashrcetc, aber nicht, wenn Sie aus irgendeinem Grund die Implikationen wirklich verstehen und es immer noch tun wollen. Es würde in vielerlei Hinsicht grepaufgrund der oben genannten Tatsache brechen 1 .
Fügen Sie ein hinzu, aliaswenn Sie es häufig verwenden.
alias cgrep='grep --color=always'
GREP_OPTIONSund --color nehmen Sie drei Optionen : never, autound always. Die beiden ersten sollten die einzigen sein, die berücksichtigt werden GREP_OPTIONS.
Sie können auch auf GREP_COLORSden manSeiten oder bei gnu grep nachsehen .