Подсветка tail -f
При просмотре логов с помошью 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
- 6155 просмотров
..

А таблица цветов у кого-нибудь есть?
Вы хотели поделиться с миром открытием 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 удобнее если нужно разными цветами подсвечивать
советы в тему
http://linsovet.com/regex-highlight
http://linsovet.com/vim-view-maillog
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/
Спасибо!
Сейчас еще разбор полётов допишу (-:
Отправить комментарий