在perl中为日志输出(stdout)着色

时间:2014-08-10 06:07:54

标签: regex linux string perl unix

我很抱歉打字错误 我有一个这样的日志文件:

mynum[85295365] | yournum[3201410] | mymessage[4 ????? 4 off] | MSGLen[1]

我会像这样着色输出

mynum == foreground blue  
yournum == foreground yellow  
and mymessage == foreground green.

我对mymessage着色有问题 我尝试了以下代码:

if($currentLine=~m/mymessage\[([\w+\d+\S]+){1,}\]/){  
$mymessage=$1;  
$outM="$mymessage";  
$currentLine=~s/mymessage\[([\w+\d+\S]+){1,}\]/mymessage[$cg$outM$crs]/g;}

没有结果没有。
帮助我:((((

2 个答案:

答案 0 :(得分:1)

使用Term::ANSIColor CPAN模块。它允许您使用ANSI转义序列着色屏幕输出

答案 1 :(得分:0)

使用此正则表达式:

mymessage\[(.+?)\]

然后您的代码变为:

if ($currentLine =~ /mymessage\[(.+?)\]/) {
    $mymessage = $1;  
    $outM = $mymessage;  
    $currentLine =~ s/mymessage\[(.+?)\]/mymessage[$cg$outM$crs]/g;
}