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.

Réponses:


30

Essayer:

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

Des 3 réponses, c'était la seule qui fonctionnait.
slm

4

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


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.


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'
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.