Использование --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 .