【问题标题】:How to remove the decorate colors characters in bash output?如何删除 bash 输出中的装饰颜色字符?
【发布时间】:2015-11-16 23:19:45
【问题描述】:

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

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

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

谢谢。

【问题讨论】:

    标签: bash sed colors tr


    【解决方案1】:

    我在the manual 中发现了这个关于 ANSI 转义码的使用:

    -no-ansi
        Do not use ANSI escape codes.
    

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

    【讨论】:

    • 不,该选项也会删除其他字符 (á é í ó ú ñ...)
    • @GeaPlanet 那么你做错了什么。这些字符不是 ansi 转义符,不应受-no-ansi 的影响。这听起来更像是我的配置问题(或 translate-shell 中的错误)。
    【解决方案2】:

    您有多种选择:

    编辑

    solution from commandlinefu 做得很好:

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

    solution from unix.stackexchange 可能会更好,但要长得多,因此您需要创建一个单独的脚本文件,因为它太长了,而不是仅仅做一个 shell 单行。

    【讨论】:

    • commandlinefu 中的选项完美运行,谢谢: sed -r "s/\x1B[([0-9]{1,2}(;[0-9]{1,2}) ?)?[m|K]//g"
    • 这是一个仅链接的答案;请在答案中提供相关细节。
    • 's/\x1b\[[0-9;]*m//g' 正则表达式 works better
    猜你喜欢
    • 2020-02-17
    • 2017-09-24
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    • 2013-02-01
    • 2011-07-01
    相关资源
    最近更新 更多