我可以使用什么命令从文本文件中删除颜色代码转义序列?理想情况下,我可以通过管道传递。如果我有一个包含一堆彩色文本的文件 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'