Colors 从sed输出中提取颜色代码

Colors 从sed输出中提取颜色代码,colors,sed,asterisk,Colors,Sed,Asterisk,我正在编写一个小脚本,可以在星号机器上为我做一些日志记录。在linux(centOS)命令行中,我可以键入: asterisk -rx "transcoder show" 它提供了我需要记录的输出。此输出如下所示: 5/5 encoders/decoders of 120 channels are in use. YYYY-MM-DD HH-MM-SS #encoders #decoders 我想在日志文件中写一行,如下所示: 5/5 encoders/decoders o

我正在编写一个小脚本,可以在星号机器上为我做一些日志记录。在linux(centOS)命令行中,我可以键入:

asterisk -rx "transcoder show"
它提供了我需要记录的输出。此输出如下所示:

5/5 encoders/decoders of 120 channels are in use.
YYYY-MM-DD HH-MM-SS     #encoders     #decoders
我想在日志文件中写一行,如下所示:

5/5 encoders/decoders of 120 channels are in use.
YYYY-MM-DD HH-MM-SS     #encoders     #decoders
然后我会每隔几分钟记录一次,我会有我使用了多少频道的历史记录。所以我写了一个小php脚本:

<?php
exec("asterisk -rx \"transcoder show\" | sed 's|\\([0-9]*\\)\/\\([0-9]*\\).*|\\1:\\2|'",$retval);
$time = date('Y-m-d h:i:s');
$vals = explode(":",$retval[0]);
$encoders = trim($vals[0]);
$decoders = trim($vals[1]);
$logString = "$time\t$encoders\t$decoders\n";
$fh = fopen('/root/script/trans.log','a');
fwrite($fh,$logString);
fclose($fh);
?>

我想不出火车在哪里^[[0;37;40m来自。据我所知,这是一个颜色代码,用于设置shell中显示文本的颜色,但这是sed添加的内容,还是来自原始输出?如何消除它?如果使用echo语句将变量$encoders和$decoders打印到命令行,则没有特殊的颜色格式,原始asterisk-rx命令的输出中也没有任何内容。

这不是因为
sed
添加了颜色代码,只是它从asterisk传递了颜色代码。您真正想做的是从asterisk接收输出,而它一开始就没有这些颜色代码

-n
命令将去除ANSI颜色支持:


这并不是说sed正在添加颜色代码,而是它正在从Asterisk传递颜色代码。您真正想要做的是从Asterisk接收输出,而Asterisk一开始就没有这些颜色代码

-n
命令将去除ANSI颜色支持:


你是对的,我上错树了,这是个骗局!你是对的,我上错树了,这是个骗局!