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.

Odpowiedzi:


30

Próbować:

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

Z 3 odpowiedzi była to jedyna działająca.
slm

4

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


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ę.


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'
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.