In CentOS 4.4, come posso rimuovere le sequenze di escape da un file di testo?


17

Quale comando posso usare per rimuovere le sequenze di escape con codice colore da un file di testo? Idealmente qualcosa che posso convogliare. Se ho un file con un sacco di testo colorato rainbow.txt, cosa c'è nel gap:

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

Sto lavorando bash su CentOS 4.4.

Risposte:


30

Provare:

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

Delle 3 risposte questa era l'unica che ha funzionato.
slm,

4

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


Perché non c'è nessun voto su questo? L'unica soluzione che funziona per me! Ed è anche dannatamente semplice!
phunehehe,

3
Perché non funziona per me.
lzap,

6
Questo elimina solo i personaggi di escape, non i loro argomenti.
Aaron,

1

Non puoi, perché quella che è una sequenza di escape non è ben definita in generale - devi sapere per quale tipo di terminale sono progettate le tue sequenze di escape. Se vuoi limitare il problema a "eliminare le sequenze di colori ANSI" (un presupposto abbastanza probabile), qualcosa del tipo:

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

Dovrebbe fare il trucco.


1

Quanto segue catturerà le possibilità [Xm , [X; m , [X; Ym e [X; Y; Zm (alcune di queste potrebbero essere tecnicamente errate, ma funzionano e sono state viste in natura):

sed -r 's|\x1B\[[0-9]{1,2};?(;[0-9]{1,2}){,2}m||g'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.