【发布时间】:2015-11-16 23:19:45
【问题描述】:
控制台程序(translate-shell)有一个带有颜色的输出,并为此使用特殊的装饰字符:^[[22m、^[[24m、^[[1m...等等。
我想删除它们以获得纯文本。
我尝试使用 tr -d "^[[22m" 和 sed 's/[\^[[22m]//g',但只删除了数字,而不是特殊字符 ^[
谢谢。
【问题讨论】:
控制台程序(translate-shell)有一个带有颜色的输出,并为此使用特殊的装饰字符:^[[22m、^[[24m、^[[1m...等等。
我想删除它们以获得纯文本。
我尝试使用 tr -d "^[[22m" 和 sed 's/[\^[[22m]//g',但只删除了数字,而不是特殊字符 ^[
谢谢。
【问题讨论】:
【讨论】:
-no-ansi 的影响。这听起来更像是我的配置问题(或 translate-shell 中的错误)。
您有多种选择:
-no-ansi 正如 Jens 在其他答案中指出的那样编辑
solution from commandlinefu 做得很好:
sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"
solution from unix.stackexchange 可能会更好,但要长得多,因此您需要创建一个单独的脚本文件,因为它太长了,而不是仅仅做一个 shell 单行。
【讨论】:
's/\x1b\[[0-9;]*m//g' 正则表达式 works better