【问题标题】:Expect: Remove color codes from output and log file期望:从输出和日志文件中删除颜色代码
【发布时间】:2018-01-07 20:48:21
【问题描述】:

我正在运行一个调用远程计算机上的多个脚本的期望脚本。这些 shell 脚本返回颜色输出(主要是红色和绿色)。 问题是,这些颜色代码进入了我不想要的 log_file 和 STDOUT。我无法修改远程脚本。

我尝试了sed,在那里我通过 sed 将来自 expect 的输出通过管道删除了颜色代码。问题是,expect 脚本由 Webmin“自定义命令”模块运行,该模块在管道输出方面存在问题。 我还尝试使用期望脚本中的 sed 管道调用远程脚本,但这会产生其他问题。

有没有办法通过内置的东西直接从 STDOUT 和 log_file 中删除颜色代码?

【问题讨论】:

    标签: linux bash shell expect


    【解决方案1】:

    颜色代码以 CSI 代码 (ESC+[) 开头,后面是可以用 ; 分隔的数字。以下 perl 命令可用于删除这些序列:

    perl -pe 's/\033\[[\d;]*m//g'
    
    # examples
    
    echo $'\033''[3;31mhi'$'\033''[0m'
    
    echo $'\033''[3;31mhi'$'\033''[0m' | perl -pe 's/\033\[[\d;]*m//g'
    

    编辑:\033\e\x1b

    其他选项可能是导出 TERM 变量,例如:

    export TERM=xterm-old
    

    【讨论】:

      猜你喜欢
      • 2018-02-13
      • 2011-02-23
      • 1970-01-01
      • 1970-01-01
      • 2016-08-01
      • 2013-08-02
      • 1970-01-01
      • 2021-01-07
      • 2013-10-18
      相关资源
      最近更新 更多