Раскрашиваем вывод хвоста

Я пытался сделать хвост более читабельным для запуска серверов. Моя текущая команда отфильтровывает большую часть сообщений INFO и DEBUG при запуске:

tail -F ../server/durango/log/server.log | grep -e "ERROR" -e "WARN" -e "Shutdown" -e "MicroKernel" | grep --color=auto -E 'MicroKernel|$'

Я бы хотел создать что-то, что выделяло бы WARN желтым, ERROR красным и MicroKernel зеленым. Я несколько раз пробовал просто указать grep --color = auto, но единственный цвет, который сохранился, - это последняя команда в конвейере.

Есть ли для этого один лайнер? Или даже многострочный?


person tpederson    schedule 04.02.2013    source источник


Ответы (6)


да, есть способ сделать это. То есть, если ваш терминал поддерживает escape-последовательности ANSI. Это большинство существующих терминалов.

Я думаю, мне не нужно объяснять, как использовать grep, sed и т. Д., Правильный цвет?

см. ниже, это сделает

WARN yellow
ERROR red
foo   green

вот пример:

kent$ echo "WARN
ERROR
foo"|sed 's#WARN#\x1b[33m&#; s#ERROR#\x1b[31m&#; s#foo#\x1b[32m&#'

Примечание: \x1b является шестнадцатеричным для символа ESC (^ V Esc).

чтобы увидеть результат:

введите описание изображения здесь

person Kent    schedule 04.02.2013
comment
Добавьте ^ [[0m сразу после амперсандов (&) в команде sed, если вы хотите раскрасить только соответствующее ключевое слово, а не всю строку. - person chepner; 04.02.2013
comment
@sehe ... да, немного лениво набирать эти ... sry ... кстати, я бы поддержал ваше \x1b edit; Жаль, что гифку нельзя редактировать. :) - person Kent; 04.02.2013
comment
@Kent Я понял это, иначе я бы вообще отказался от упоминания ^[ :) - person sehe; 04.02.2013
comment
Впечатлил своим стилем :) приятный терминал - person Satish; 04.02.2013
comment
@sehe Я сейчас в пути, я сделаю новую гифку, когда буду дома, чтобы дать полный ответ - person Kent; 04.02.2013
comment
Не уверен, что это проблема с терминалом, но ^ [[0m ничего не сделал для меня, кроме вывода этих символов в конце совпадения, и цвет сохранялся, даже когда я выходил из команды. Итак, я тоже сопоставил, например, # WARN # и превратил его в # ^. * WARN. * $ #, И я использовал \ x1b [0m после амперстенда. Тем не менее, спасибо за помощь, теперь у меня все работает, и теперь легче увидеть, есть ли проблемы с запуском сервера. - person tpederson; 05.02.2013
comment
@tpederson Это определенно проблема с вами :) См. отредактированный пост, который делает это намного яснее. Внимательно следите за изменением, которое может быть незаметным (см. Также исправления) ИЗМЕНИТЬ Подождите, вы, должно быть, имеете в виду оставшийся комментарий. Само собой разумеется, что ^[ обозначает (единственный) Escape-символ. В посте описано несколько способов ввести этого персонажа. - person sehe; 05.02.2013

Я написал для этого сценарий много лет назад. Вы можете легко покрыть случай использования нескольких цветов, связав последовательные вызовы highlight друг с другом.

Из README:

Usage: ./highlight [-i] [--color=COLOR_STRING] [--] <PATTERN0> [PATTERN1...]

This is highlight version 1.0.

This program takes text via standard input and outputs it with the given
perlre(1) pattern(s) highlighted with the given color.  If no color option
is specified, it defaults to 'bold red'.  Colors may be anything
that Perl's Term::ANSIColor understands.  This program is similar to
"grep --color PATTERN" except both matching and non-matching lines are
printed.

The default color can be selected via the $HIGHLIGHT_COLOR environment
variable.  The command-line option takes precedence.

Passing -i or --ignore-case will enable case-insensitive matching.

If your pattern begins with a dash ('-'), you can pass a '--' argument
after any options and before your pattern to distinguish it from an
option.
person Dave Goodell    schedule 17.03.2014

Я уже много лет использую для этого инструмент под названием grc. работает как шарм. Он поставляется с некоторыми неплохими шаблонами для многих стандартных выходных журналов и форматов, и его легко определить самостоятельно. Я часто использую команду

grc tail -f /var/log/syslog

Он окрашивает вывод системного журнала в цвет, чтобы было легче обнаруживать ошибки (обычно отмечены красным.

Найдите инструмент здесь:

https://github.com/garabik/grc

(он также доступен в виде пакета для большинства распространенных разновидностей Linux).

person kimusan    schedule 18.01.2019


Вы можете создать цветной журнал вместо использования сложной команды.

введите описание изображения здесь

Для php это так:

echo "^[[30;43m".$ip."^[[0m";

Ключевым моментом является использование Ctrl-v ctrl- [для ввода зеленого символа ^ [ в режиме вставки в vim, прямой ввод ^ [не работает.

введите описание изображения здесь

Подробнее здесь

person Mark Li    schedule 18.01.2019
comment
При ссылке на ваш собственный сайт или контент (или контент, с которым вы связаны) вы должны указать свою принадлежность в ответе, чтобы чтобы это не считалось спамом. Наличие в вашем имени пользователя того же текста, что и URL-адрес, или упоминание его в вашем профиле не считается достаточным раскрытием в соответствии с политикой Stack Exchange. - person Sabito 錆兎; 18.12.2020

Я написал небольшую утилиту для раскрашивания журналов TxtStyle. Вы определяете регулярные выражения для выделения в ~/.txts.conf файле:

[Style="example"]
!red: regex("error")
green: regex("\d{4}-\d\d-\d\d")
# ...

А затем примените стили:

txts -n example example.log

или вы также можете передать вывод

tail -f example.log | txts -n example

введите описание изображения здесь

person armandino    schedule 18.12.2020