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.

kdt
fuente

Respuestas:

30

Tratar:

sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"
rkthkr
fuente
De las 3 respuestas, esta fue la única que funcionó.
slm
4

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

Vi.
fuente
¿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.

womble
fuente
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'
linux_sa
fuente