En CentOS 4.4, ¿cómo puedo quitar secuencias de escape de un archivo de texto?


17

¿Qué comando puedo usar para quitar secuencias de escape de código de color de un archivo de texto? Idealmente, algo que pueda atravesar. Si tengo un archivo con un montón de texto de color rainbow.txt, lo que hay en el vacío:

cat rainbox.txt | *something* > plain.txt

Estoy trabajando en bash en CentOS 4.4.

Respuestas:


30

Tratar:

sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"

De las 3 respuestas, esta fue la única que funcionó.
slm

4

cat rainbox.txt | col -b > plain.txt


¿Por qué no hay ningún voto positivo en esto? ¡La única solución que funciona para mí! ¡Y es muy simple también!
phunehehe

3
Porque no me funciona.
lzap

66
Esto solo elimina los caracteres de escape, no sus argumentos.
Aaron

1

No puede, porque lo que es una secuencia de escape no está bien definida en general; necesita saber para qué tipo de terminal están diseñadas sus secuencias de escape. Si desea restringir el problema a "eliminar secuencias de color ANSI" (una suposición bastante probable), algo como:

sed 's/\o033\[[0-9]*;[0-9]*m//g'

Debería hacer el truco.


1

Lo siguiente capturará las posibilidades [Xm , [X; m , [X; Ym , y [X; Y; Zm (algunas de ellas pueden ser técnicamente incorrectas, pero funcionan y se han visto en la naturaleza):

sed -r 's|\x1B\[[0-9]{1,2};?(;[0-9]{1,2}){,2}m||g'
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.