Ищу консольную утилиту для хитрой подсветки и фильтрации файлов, суть такова:
Есть файл с набором строк (лог файл, выхлоп 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, но ещё не все требуемые фичи нашёл.