2017-08-01 43 views
1

我正在運行一個期望腳本,它調用遠程計算機上的幾個腳本。這些shell腳本返回顏色輸出(主要是紅色和綠色)。 問題是,那些顏色代碼使它成爲我不想要的log_file和STDOUT。我無法修改遠程腳本。期望:從輸出和日誌文件中刪除顏色代碼

我試過sed,其中我通過sed將輸出從sed中移除,它刪除了顏色代碼。問題是,期望腳本由Webmin「custom commands」模塊運行,該模塊在管道輸出方面存在問題。 我也嘗試在expect腳本中使用sed管道調用遠程腳本,但這會產生其他問題。

有沒有一種方法可以直接從STDOUT和log_file中去除顏色代碼,以期望內置某些東西?

回答

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