Як "UN-ANSI-fy" журнали?


10

Останнім часом в інструментах командного рядка спостерігається тенденція до використання фантазійних кольорів ANSI у своєму журналі (наприклад, NPM та безліч інструментів на основі nodejs, rvm, docker та декілька інших "сучасних" інструментів).

Це приємно читати на екрані (*), але не так приємно, коли ви хочете передати висновок у файл журналу або через транспорт, який не працює з ANSI добре, як різні інструменти віддаленого виконання та веб-моніторингові рішення. Багато більш зрілих інструментів принаймні мали пристойність виявити, коли вихід не є TTY та відключити колір, але не з тими новими роздутими "user-friendly" CLI - що дозволяє мені спробувати позбутися від ANSI кольорів за допомогою трубопроводів вихід через ще один процес.

s/\x1B\[[0-9]*\w//gЗдається, що через виведення результату начебто вдається виконати роботу, але чи є більш чистий підхід, а потім просто скопіювати вставлення регулярних виразів у всі мої сценарії?

(*) принаймні, поки інструмент не спробує відобразити помилки темно-червоного кольору на вашому терміналі темного фону.


2
Див: unix.stackexchange.com/questions/14684 / ... - unix.stackexchange.com/questions/111899 / ... stackoverflow.com/questions/17998978 / ... superuser.com/questions/380772 / ... - Між 4+ питання більш Протягом 3 років на трьох сайтах ми отримали відповіді лише на використання інструменту, який здійснює заміну / видалення регулярних виразів. Я б здогадався, що немає нічого кращого.
Зоредаче

Про єдине, що виходить на дискусію, це те, який регулярний вираз є найкращим для якої ситуації.
Зоредаче

1
is there a cleaner approach then just copy pasting regular expressions into all of my scripts?- Збережіть ваш фільтр очищення у файл під назвою '/ usr / local / bin / stripttycolor.sh` або щось таке? Таким чином, у вас є регулярний вираз, приурочений до одного місця?
Зоредаче

3
Якщо ви знаєте, що будете записувати вихід у файл, найпростіше зробити (принаймні для NPM) - запустити --no-colorпрапор. Багато інших команд також мають подібні прапори.
Моше Кац

@MosheKatz: на жаль, не всі команди, наприклад bower.
Гасс

Відповіді:


1

"ansifilter -p" може бути корисним для вас ...

Це у репортах Fedora; -p вказує звичайний вихід:

Name        : ansifilter
From repo   : updates
Summary     : ANSI terminal escape code converter
URL         : http://www.andre-simon.de/doku/ansifilter/ansifilter.php
License     : GPLv3+
Description : Ansifilter handles text files containing ANSI terminal escape codes.
            : The command sequences may be stripped or be interpreted to generate formatted
            : output (HTML, RTF, TeX, LaTeX, BBCode).

Працює чудово, тепер мені просто потрібно упакувати його для Ubuntu :-)
Guss
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.