В 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"

Из 3 ответов это был единственный, который работал.
SLM

4

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


Почему нет никакого возражения по этому поводу? Единственное решение, которое работает для меня! И это чертовски просто!
phunehehe

3
Потому что это не работает для меня.
lzap

6
Это только избавляет от escape-символов, а не их аргументов.
Аарон

1

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

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

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


1

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

sed -r 's|\x1B\[[0-9]{1,2};?(;[0-9]{1,2}){,2}m||g'
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.