У меня есть результат моей программы: # 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