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

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

我可以使用什么命令从文本文件中删除颜色代码转义序列?理想情况下,我可以通过管道传递。如果我有一个包含一堆彩色文本的文件 rainbow.txt,那么间隙中会出现什么:

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

我在 CentOS 4.4 上使用 bash 工作。

答案1

尝试:

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

答案2

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

答案3

你不能,因为转义序列通常没有明确的定义——你需要知道你的转义序列是为哪种终端设计的。如果你想将问题限制为“剥离 ANSI 颜色序列”(一个相当可能的假设),例如:

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

应该可以奏效。

答案4

下面将捕捉[Xm[X;米[X;Y], 和[X;Y;Zm可能性(其中一些可能在技术上不正确,但它们有效并且已在实际中被发现):

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

相关内容