No CentOS 4.4, como retirar as seqüências de escape de um arquivo de texto?


17

Que comando posso usar para remover seqüências de escape de código de cores de um arquivo de texto? Idealmente, algo que eu possa passar. Se eu tiver um arquivo com um monte de texto colorido rainbow.txt, o que há na lacuna:

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

Estou trabalhando no bash no CentOS 4.4.

Respostas:


30

Experimentar:

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

Das 3 respostas, essa foi a única que funcionou.
Slm

4

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


Por que não há nenhum voto positivo nisso? A única solução que funciona para mim! E é muito simples também!
phunehehe

3
Porque isso não funciona para mim.
lzap

6
Isso apenas elimina os caracteres de escape, não seus argumentos.
Aaron

1

Você não pode, porque o que é uma sequência de escape não é bem definido em geral - você precisa saber para que tipo de terminal suas sequências de escape foram projetadas. Se você deseja restringir o problema a "remover seqüências de cores ANSI" (uma suposição bastante provável), algo como:

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

Deve fazer o truque.


1

A seguir, serão capturadas as possibilidades [Xm , [X; m , [X; Ym e [X; Y; Zm (algumas delas podem estar tecnicamente incorretas, mas funcionam e foram vistas na natureza):

sed -r 's|\x1B\[[0-9]{1,2};?(;[0-9]{1,2}){,2}m||g'
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.