Dans CentOS 4.4, comment supprimer les séquences d'échappement d'un fichier texte?

17

Quelle commande puis-je utiliser pour supprimer les séquences d'échappement de code couleur d'un fichier texte? Idéalement, quelque chose que je peux faire passer. Si j'ai un fichier avec un tas de texte en couleur rainbow.txt, ce qui se passe dans l'écart:

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

Je travaille en bash sur CentOS 4.4.

kdt
la source

Réponses:

30

Essayer:

sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"
rkthkr
la source
Des 3 réponses, c'était la seule qui fonctionnait.
slm
4

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

Vi.
la source
Pourquoi n'y a-t-il pas de vote positif à ce sujet? La seule solution qui fonctionne pour moi! Et c'est sacrément simple aussi!
phunehehe
3
Parce que ça ne marche pas pour moi.
lzap
6
Cela ne fait que supprimer les caractères d'échappement, pas leurs arguments.
Aaron
1

Vous ne pouvez pas, car ce qu'est une séquence d'échappement n'est pas bien défini en général - vous devez savoir pour quel type de terminal vos séquences d'échappement sont conçues. Si vous souhaitez limiter le problème à "supprimer les séquences de couleurs ANSI" (une hypothèse assez probable), quelque chose comme:

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

Devrait faire l'affaire.

womble
la source
1

Les éléments suivants captureront les possibilités [Xm , [X; m , [X; Ym et [X; Y; Zm) (certaines d'entre elles peuvent être techniquement incorrectes, mais elles fonctionnent et ont été vues dans la nature):

sed -r 's|\x1B\[[0-9]{1,2};?(;[0-9]{1,2}){,2}m||g'
linux_sa
la source