无颜色重定向

无颜色重定向

可能的重复:
从脚本输出中删除控制字符(包括控制台代码/颜色)

重定向到文件时如何禁用所有颜色代码?

我之前问过如何将所有内容重定向到文件,现在我想知道如何在没有颜色的情况下重定向。

所以而不是:

^[(B^[[m^[[1m^[[31m:: ^[(B^[[m^[[1mDaemon script ^[(B^[[m^[[1m^[[31mntpd^[(B^[[m^[[1m does not exist or is not executable.^[(B^[[m

我期待着实现简单:

:: Daemon script ntpd does not exist or is not executable.

更新:

查看 jw013 提供的链接,我尝试了以下sed方法:

rc.d restart ntpd | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" &> progress.txt

但它甚至没有重定向,只是将彩色输出显示到控制台。

更新2:

在 user1146332 评论之后,为了通过管道传输 STDERR,我必须通过管道传输|&.

rc.d restart ntpd | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" &> progress.txt

结果是:

^[(B:: ^[(BDaemon script ^[(Bntpd^[(B does not exist or is not executable.^[(B

它更整洁了,但仍然保留了一些代码。但那个sed正则表达式对我来说太难破译了。

答案1

由于您运行的是 arch linux,因此您可以导出 USECOLOR 变量,

%> export USECOLOR="no"  # color-less
%> /etc/rc.d/ntpd stop

以及 sed 去除颜色的技巧,

rc.d stop ntpd | sed -r "s:\x1B\[[0-9;]*[mK]::g"

但这无法处理 rc.d 生成的退格键

答案2

一种简单的可能更通用的方法是将 TERM 变量更改为不支持颜色,例如“vt100”?

答案3

即时写下此内容,不确定颜色代码的格式,但也许可以尝试一下:

command | awk '{gsub(/\^[^Bm]*[Bm]/,"")}1'

相关内容