如何删除bash输出中的装饰颜色字符?

时间:2015-08-23 13:08:16

标签: bash sed colors tr

控制台程序(translate-shell)有一个带颜色的输出,并使用特殊的装饰字符:^ [[22m,^ [[24m,^ [[1m ...等等。

我想删除它们以获得纯文本。

我尝试使用tr -d“^ [[22m”并使用sed的/ [\ ^ [[22m] // g',但只删除了数字,而不是特殊字符^ [

感谢。

2 个答案:

答案 0 :(得分:6)

您有多种选择:

修改

solution from commandlinefu做得很好:

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

solution from unix.stackexchange可能会更好,但会更长,因此您可能希望创建一个单独的脚本文件,因为它太长而不只是做一个单行内容。

答案 1 :(得分:2)

我在the manual中发现了有关使用ANSI转义码的信息:

-no-ansi
    Do not use ANSI escape codes.

所以你应该在启动程序时添加这个选项。