Jak w CentOS 4.4 mogę usunąć sekwencje specjalne z pliku tekstowego?

17

Jakiego polecenia mogę użyć, aby usunąć sekwencje specjalne kodów kolorów z pliku tekstowego? Idealnie coś, przez co mogę przepłynąć. Jeśli mam plik z pęczkiem kolorowego tekstu rainbow.txt, co dzieje się w luce:

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

Pracuję w bash na CentOS 4.4.

kdt
źródło

Odpowiedzi:

30

Próbować:

sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"
rkthkr
źródło
Z 3 odpowiedzi była to jedyna działająca.
slm
4

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

Vi.
źródło
Dlaczego nie ma na to żadnej opinii? Jedyne rozwiązanie, które działa dla mnie! I to jest cholernie proste!
phunehehe,
3
Ponieważ to nie działa dla mnie.
lzap,
6
Pozbywa się to tylko znaków ucieczki, a nie ich argumentów.
Aaron
1

Nie możesz, ponieważ to, co jest sekwencją ucieczki, nie jest ogólnie dobrze zdefiniowane - musisz wiedzieć, do jakiego rodzaju terminala są zaprojektowane twoje sekwencje ucieczki. Jeśli chcesz ograniczyć problem do „usuwania sekwencji kolorów ANSI” (dość prawdopodobne założenie), coś w stylu:

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

Powinien załatwić sprawę.

womble
źródło
1

Poniższe informacje uchwycą możliwości [Xm , [X; m , [X; Ym i [X; Y; Zm] (niektóre z nich mogą być technicznie niepoprawne, ale działają i były widoczne na wolności):

sed -r 's|\x1B\[[0-9]{1,2};?(;[0-9]{1,2}){,2}m||g'
linux_sa
źródło