Одне рішення, яке працює для фарбування різного роду тексту, а не лише журналів, - це інструмент Python, " colout ".
pip install colout
myprocess | colout REGEX_WITH_GROUPS color1,color2... [attr1,attr2...]
Де будь-який текст у висновку "myprocess", який відповідає групі 1 регулярного вираження, буде забарвлений кольором1, група 2 кольором2 тощо.
Наприклад:
tail -f /var/log/mylogfile | colout '^(\w+ \d+ [\d:]+)|(\w+\.py:\d+ .+\(\)): (.+)$' white,black,cyan bold,bold,normal
тобто перша група регулярних виразів (паронів) відповідає початковій даті в логфайлі, друга група відповідає імені файлу python, номеру рядка та імені функції, а третя група відповідає повідомленню журналу, яке надходить після цього. Це виглядає так:
Зауважте, що рядки або частини рядків, які не відповідають жодному моєму регулярному вираженню, все ще перегукуються, тому це не схоже на "grep --color" - нічого не фільтрується з виводу.
Очевидно, що це досить гнучко, що ви можете використовувати його з будь-яким процесом, а не лише з тим, щоб зафіксувати журнали. Я, як правило, просто збиваю нову виразку на льоту, коли б я хотів щось забарвити. З цієї причини я віддаю перевагу розфарбуванню будь-якому користувальницькому інструменту забарвлення файлів, оскільки мені потрібно вивчити лише один інструмент, незалежно від того, що я забарвлюю: ведення журналів, тестовий вихід, виділення синтаксису, фрагменти коду в терміналі тощо.
sed
: stackoverflow.com/a/14691971/52074