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.

kdt
fonte

Respostas:

30

Experimentar:

sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"
rkthkr
fonte
Das 3 respostas, essa foi a única que funcionou.
Slm
4

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

Vi.
fonte
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.

mulher
fonte
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'
linux_sa
fonte