¿Cómo "desanudar ANSI" registros?

10

Últimamente, las herramientas de línea de comandos han tendido a utilizar colores ANSI elegantes en su salida de registro (por ejemplo, NPM y una gran cantidad de herramientas basadas en nodejs, rvm, docker y algunas otras herramientas "modernas").

Esto hace que sea agradable de leer en la pantalla (*), pero no tan agradable cuando desea canalizar la salida a un archivo de registro o a través de un transporte que no maneja bien ANSI, como varias herramientas de ejecución remota y soluciones de monitoreo basadas en la web. Muchas herramientas más maduras al menos tuvieron la decencia de detectar cuando la salida no es un TTY y deshabilitar el color, pero no con esas nuevas CLI "fáciles de usar", lo que me deja tratar de deshacerme de los colores ANSI mediante tuberías. la salida a través de otro proceso más.

Aparecer el resultado s/\x1B\[[0-9]*\w//gparece hacer el trabajo, pero ¿hay un enfoque más limpio que copiar las expresiones regulares pegadas en todos mis scripts?

(*) al menos hasta que la herramienta intente mostrar errores en rojo oscuro en su terminal de fondo oscuro.

Guss
fuente
2
Ver: unix.stackexchange.com/questions/14684/... - unix.stackexchange.com/questions/111899/... stackoverflow.com/questions/17998978/... superuser.com/questions/380772/... - Entre 4+ preguntas una Durante 3 años en 3 sitios, solo hemos recibido respuestas para usar una herramienta que realiza la sustitución / eliminación de expresiones regulares. Supongo que no hay nada mejor.
Zoredache
Lo único que parece debatirse es qué expresión regular es la mejor para cada situación.
Zoredache
1
is there a cleaner approach then just copy pasting regular expressions into all of my scripts?- Guarde su filtro de limpieza en un archivo llamado '/ usr / local / bin / stripttycolor.sh` o algo así? De esa manera, ¿tienes la expresión regular limitada a una sola ubicación?
Zoredache
3
Si sabe que va a escribir la salida en un archivo, lo más fácil (al menos para NPM) es ejecutar con la --no-colorbandera. Muchos otros comandos también tienen banderas similares.
Moshe Katz
@MosheKatz: desafortunadamente no todos los comandos lo hacen, por ejemplo bower.
Guss

Respuestas:

1

"ansifilter -p" podría serle útil ...

Está en los repositorios de Fedora; -p especifica salida simple:

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).
Liczyrzepa
fuente
Funciona bien, ahora solo necesito empaquetarlo para Ubuntu :-)
Guss