我正在运行一个在远程计算机上调用多个脚本的expect脚本。那些shell脚本返回颜色输出(主要是红色和绿色)。 问题是,那些颜色代码使它成为我不想要的log_file和STDOUT。我无法修改远程脚本。
我尝试了sed,在那里我通过sed输出了expect的输出,删除了颜色代码。问题是,期望脚本由Webmin“自定义命令”模块运行,该模块存在管道输出问题。 我还尝试在expect脚本中使用sed管道调用远程脚本,但这会产生其他问题。
有没有办法直接从STDOUT和log_file中删除颜色代码?内容是什么?
答案 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