Назад | Перейти на главную страницу

Как сделать результаты grep цветными?

У меня есть результат моей программы: # php check.php | grep -E "rule_1|rule_4"

Я хочу, чтобы результаты, равные правилу_1, были красными, а результаты, равные правилу_4, были синими.

Возможно ли это, ведь в этот момент все окрашено в красный цвет.

Попробуй это:

alias egrep="grep -E --color=never"

alias egrep-grey="   GREP_COLOR='1;30' grep -E --color=always"
alias egrep-red="    GREP_COLOR='1;31' grep -E --color=always"
alias egrep-green="  GREP_COLOR='1;32' grep -E --color=always"
alias egrep-yellow=" GREP_COLOR='1;33' grep -E --color=always"
alias egrep-blue="   GREP_COLOR='1;34' grep -E --color=always"
alias egrep-magenta="GREP_COLOR='1;35' grep -E --color=always"
alias egrep-cyan="   GREP_COLOR='1;36' grep -E --color=always"
alias egrep-white="  GREP_COLOR='1;37' grep -E --color=always"

php check.php | egrep "rule_1|rule_4" | egrep-red "rule_1|$" | egrep-blue "rule_4|$"

Вы не можете использовать grep сам по себе как универсальный инструмент для раскрашивания. Что-то вроде цветной хвост можете делать что хотите.

Вы можете сделать это с помощью парсера регулярных выражений, например сгибать. Но имейте в виду, что некоторые шаблоны можно интерпретировать неинтуитивно (например, если ваш синтаксический анализатор сопоставляет самый длинный шаблон с самым коротким). Например узор ..1|aaa1 и вход aaaa1 обычно соответствует ..1.

Проверять, выписываться colorize.pl, который будет печатать разные цвета для определенных пользователем строк.

Вот описание из проекта colorize.pl:

Colorize.pl - это короткий сценарий, который читает из стандартного ввода и записывает в стандартный вывод. Строки, соответствующие строке поиска пользователя, будут окрашены в цвета, заданные пользователем. Доступны параметры командной строки. Раскрашивание выполняется с помощью управляющих кодов ANSI.

На моем Apple MacBook Pro следующее будет печатать «логин» при чтении и «яблоко» зеленым:

tail /var/log/system.log | colorize.pl +:login +:apple