在CentOS 4.4中,如何从文本文件中删除转义序列?


17

我可以使用什么命令从文本文件中剥离颜色代码转义序列?理想情况下,我可以通过管道传输内容。如果我有一个带有一堆彩色文本rainbow.txt的文件,那么空白是什么:

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

我正在CentOS 4.4上使用bash。

Answers:


30

尝试:

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

在这三个答案中,这是唯一有效的答案。
slm 2014年

4

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


为什么对此没有任何支持?唯一适合我的解决方案!而且这太简单了!
phunehehe 2011年

3
因为它对我不起作用。
lzap 2012年

6
这仅摆脱了转义字符,而不是其参数。
亚伦

1

您不能这样做,因为一般来讲,转义序列的定义不明确-您需要知道转义序列是为哪种终端设计的。如果要将问题限制为“条状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'
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.