期望:从输出和日志文件中删除颜色代码

时间:2017-08-01 06:10:48

标签: linux bash shell expect

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

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

有没有办法直接从STDOUT和log_file中删除颜色代码?内容是什么?

1 个答案:

答案 0 :(得分:2)

颜色代码以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