Tengo un comando que produce resultados en color, y me gustaría canalizarlo a un archivo con los códigos de color eliminados. ¿Hay algún comando que funcione como, cat
excepto que elimina los códigos de color? Planeo hacer algo como esto:
$ command-that-produces-colored-output | stripcolorcodes > outfile
isatty(stdin)
antes de hacerlo. ¿Te importaría compartir cuál es ese programa?cat
- la prueba rápida que ejecutégrep --color=auto myusername /etc/passwd
me da mi nombre de usuario en rojo con texto en blanco elsewhree.grep --color=auto myusername /etc/passwd | cat
me da un texto en blanco simplegrep --color=auto
evita la producción de color cuando la salida estándar no es un terminal. Estoy hablando de un comando que genera códigos de color incondicionalmente. (Como señala Alex anteriormente, dicho comportamiento es posiblemente un error, pero a veces necesitamos trabajar con un software imperfecto que no podemos solucionar fácilmente, y de eso se trata esta pregunta.)Respuestas:
Uno pensaría que habría una utilidad para eso, pero no pude encontrarlo. Sin embargo, este Perl one-liner debería hacer el truco:
Ejemplo:
O, si desea un script, puede guardarlo como
stripcolorcodes
:Si desea eliminar solo los códigos de color y dejar solos cualquier otro código ANSI (como el movimiento del cursor), use
en lugar de la sustitución que utilicé anteriormente (que elimina todos los códigos de escape ANSI).
fuente
Term::ANSIColor
. ¡Reconozca sus fuentes, por favor!Eliminar códigos de color (caracteres especiales) con GNU sed
O
Tira secuencias de escape ANSI en Python
Instale el paquete Python colorama (
pip install colorama
). Poner enstripcolorcodes
:Ejecutar
chmod +x stripcolorcodes
.fuente
sed
es impresionante :)Si puede instalar el módulo Term :: ANSIColor , este script perl funciona:
fuente
perl -mTerm::ANSIColor=colorstrip -n -e 'print colorstrip $_'
Si el sistema tiene acceso a NodeJS se podría instalar el paquete de nodo siguiente,
strip-ansi-cli
.Luego puede ejecutar su comando así:
fuente
Este comando sed lo hizo por mí:
Ejemplo:
fuente
sed
.Puedes usar ac para esto. Debería ser más rápido que todo lo mencionado anteriormente (aunque
perl
ysed
debería ser decente). Aquí hay un ejemplo:Como descargo de responsabilidad: la funcionalidad de filtrado de color la escribí yo.
fuente
ac
programa parece estar aquí: hub.darcs.net/vmchale/fastcat... y si es necesario,
(dnf, ...) install ansifilter
fuente