Ищу консольную утилиту для хитрой подсветки и фильтрации файлов, суть такова:


Есть файл с набором строк (лог файл, выхлоп diff, выхлоп компиляции). Каждую строку нужно распасить, расцветить и назначить какую-то категорию (INFO/WARNING/ERROR, ADDED/REMOVED, COMMENT/COMMAND/WARNING/ERROR). Категорию нужно уметь показывать для каждой строки. Правила (паттерны) должны храниться в отдельных файлах, паттерны могут быть многострочными. Правила должны как-то определять цвет (либо для всей строки, либо для частей).


Обязательно:



  • Должна быть возможность скрывать вывод, пока не встретится определённый паттерн (например, ERROR), после этого включать полный вывод обратно и вываливать всё, что накопилось (все INFO и WARNING, которые были до этого).

  • Должна быть возможность выйти после первого нахождения какой-то категории (например, ERROR).

  • Статистика по всем категориям.


Очень желательно:



  • Библиотека для Python (иногда нужно автоматически прикрепить фильтр к subprocess или stdout отдельной функции). Но в принципе подойдёт и сторонняя утилита под unix и оффтоп (MSYS/Cygwin или хотя бы сорцы).

  • Переписывать строки (заменять какие-то части подстановками, вызывать функции-обработчики), удалять пустые строки, отфильтровывать какие-то категории сообщений с концами, но это не критично.

  • Будет круто, если будет встроенный пейджер (a-la less).

  • Ещё use-case: msbuild выводит строчки с префиксами «порядковый номер проекта> реальная строка». Сейчас мне приходится отдельно собирать выхлоп для каждого проекта отдельно и заменять номер на айдишник проекта, вычитанный другим паттерном выше.


Пока пользуюсь самописным скриптом, пришло время для чего-то нормально отлаженного и протестированного.


Пробовал awk, но получившийся скрипт был ещё менее читаемым.


Сейчас смотрю на pygments, но ещё не все требуемые фичи нашёл.









 , ,






URL записи