Подсветка tail -f


masterx - Posted on 02 Март 2009

При просмотре логов с помошью tail -f подсвечиваем нужные слова:

tail -f /var/log/messages | perl -pe 's/(aaa|bbb)/\e[0;36;10m$&\e[0m/g'

Разбор полётов:
(aaa|bbb) - подсветка строк aaa и bbb.
\b((aaa|bbb)\b - подсветка слов aaa и bbb.
.*\b((aaa|bbb)\b.* - подсветка строчки, в которой встречаются aaa и bbb.

P.S. украденно отсюда:
http://fixunix.com/unix/83044-tail-color.html

0
Ваша оценка: Ничего

А таблица цветов у кого-нибудь есть?

Вы хотели поделиться с миром открытием grep для себя?

Во-первых:
Вместо tail -f лучше использовать гораздо более быструю и эффективную tailf, которая не перечитывает файл по многу раз.

Во вторых, для подобных вещей есть multitail, с КУЧЕЙ всяких возможностей и вкусностей (но к сожалению не поддерживает Юникод пока, я общался с его разработчиком, надеюсь появится попозже)

Ну и вообще, для подсветки подобное есть куча куда более удобных и красивых врапперов, чтобы не писать про каждое слово ничего самому, смотрите, я ответит вот здесь: http://linsovet.com/content/zsh-настройка-и-компиляция#comment-2499

хотел ответить, но заметил, что ramok уже все нужное сказал.
еще раз: речь идет не о подсветке вообше, а толко лишь о просмотре логов "на лету" с помошю tail -f (или tailf) и подсветки не всяких разных ключевых слов, а только лишь того, что нас интересует.
Пример:
Пишу свой собственный драивер. При тестировании, просмотривая логи, никакие цветные враперы не нужны, нужен толко мой скрипт который подсветит мне толко то, что мне нужно и ничего более.

за tailf - спасибо :)

блин да совет кто нибуть читал? причем тут grep?
grep показывает и подсвечивает только то что отфильтровывает по регеспу, а тут показывается _все_ и только подсвечивается нужное.

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

Ну вообще-то то же самое делает grep '^\|aaa\|bbb'

grep фильтрует(ВЫВОДИТ ТОЛьКО те строчки где встречается "слово")

Я внимательно прочитал совет и комментарий ramok. Предлагается сделать то же самое с моим комментарием :)

Пояснение:

1) grep 'aaa' выводит только те строки, в которых содержится 'aaa' и подсвечивает в них подстроку 'aaa'.

2) grep '^\|aaa' выводит строки, в которых содержится 'начало строки' или 'aaa' и подсвечивает их. Утверждение '^' всегда истинно, поэтому выведутся ВСЕ строки. В них во всех будет подсвечено 'начало строки' (но этого никто не увидит, т.к. утверждение '^' имеет нулевую ширину) и 'aaa' (если оно имеется в данной строке). Найдите десять отличий от результата perl -pe 's/aaa/$&<отмена-подсветки>/g'.

уел Ж:-)
разве что perl удобнее если нужно разными цветами подсвечивать

tail -f /var/log/messages | grep слово

фильтрует(выводит только те строчки где встречается "слово") и подсвечивает это "слово"
(версия GNU grep 2.5.4)

tail -f /var/log/messages | grep слово --color

Ничосе! Не знал.
* и немедленно выполнил echo "alias grep='grep --color'" >> ~/.bashrc *

лучше сделай это правильно

Спасибо)

s/grep/& --line-buffered/

Спасибо!
Сейчас еще разбор полётов допишу (-:

Отправить комментарий

Google Friend Connect (leave a quick comment)
loading...
Содержание этого поля является приватным и не предназначено к показу.