В CentOS 4.4, как я могу удалить escape-последовательности из текстового файла?

17

Какую команду можно использовать для удаления escape-последовательностей цветового кода из текстового файла? В идеале что-то, через что я могу пройти. Если у меня есть файл с кучей цветного текста rainbow.txt, что идет в пробел:

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

Я работаю в Bash на CentOS 4.4.

КДТ
источник

Ответы:

30

Пытаться:

sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"
rkthkr
источник
Из 3 ответов это был единственный, который работал.
SLM
4

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

Vi.
источник
Почему нет никакого возражения по этому поводу? Единственное решение, которое работает для меня! И это чертовски просто!
phunehehe
3
Потому что это не работает для меня.
lzap
6
Это только избавляет от escape-символов, а не их аргументов.
Аарон
1

Вы не можете, потому что то, что является escape-последовательностью, в общем-то, не очень хорошо определено - вам нужно знать, для какого терминала предназначены ваши escape-последовательности. Если вы хотите ограничить проблему "раздеванием цветовых последовательностей ANSI" (довольно вероятное предположение), что-то вроде:

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

Должен сделать свое дело.

romble
источник
1

Следующее будет захватывать возможности [Xm , [X; m , [X; Ym и [X; Y; Zm (некоторые из них могут быть технически неверными, но они работают и были замечены в дикой природе):

sed -r 's|\x1B\[[0-9]{1,2};?(;[0-9]{1,2}){,2}m||g'
linux_sa
источник