Использование --color=always.
grepопределяет, является ли вывод в канал (или файл). Вы больше никогда не хотите, чтобы цвета выводились в файл - так как это экранирующие последовательности для терминала. Как правило:
foo ^[[01;31m^[[Kbar^[[m^[[K
например:
grep pattern file > result
Переопределить использование --color=always.
grep --color=always pattern file | ...
Пример:
Имея файл:
ID=111;Year=2013;foo=bar
ID=222;Year=2013;foo=baz
потом
grep --color=always ID file | grep --color=always 2013 | grep foo
будет цвет ID, 2013и foo.
grep --color=always ID file | grep 2013 | grep foo
будет цвет IDи foo, но нет 2013.
1 Важно: Вы также должны помнить, что добавленный беспорядок из цветов передается следующей команде в цепочке. Как только ID раскрашен, вы не можете (легко), например, сопоставитьID=111.
В некоторых случаях можно было бы хотеть терминальные цвета в файле . Попробуйте например
grep --color=always foo file > result
cat result
Хотя полученный файл будет очень ограничен в переносимости.
Сама раскраска также является продолжением.
Как упоминалось в добром @slm , вы можете добавить:
export GREP_OPTIONS="--color=always"
на ваш и .bashrcт. д., но не, если вы по какой-то причине действительно не понимаете последствий и по-прежнему хотите это сделать. Это во многом сломалось бы grepиз-за факта, упомянутого выше 1 .
Добавьте, aliasесли вы используете его часто.
alias cgrep='grep --color=always'
GREP_OPTIONSи --color принять три варианта : never, autoи always. Два первых должны быть единственными для рассмотрения GREP_OPTIONS.
Вы также можете проверить GREP_COLORSна manстраницах или в GNU grep .