您的位置:首页 > 运维架构 > Linux

【03】 linux 终端下高亮输出perl

2016-12-23 05:32 239 查看
    经常使用linux 的人会发现,有很多命令的输出结果都带有一定的格式,比如说颜色高亮显示,背景颜色等。 那么在编写perl 脚本的时候,是否也能将perl 的输出进行格式化处理呢? 答案是肯定的,而且非常简单。

1.  perl 支持的输出样式:

    1. 测试脚本: test-format

#!/usr/bin/perl

#打印颜色必须引入的模块和设置
use Term::ANSIColor qw(:constants);
$Term::ANSIColor::AUTORESET = 1;

print "\n perl 支持的颜色类型 \n";

print BOLD "BOLD\n";
print CLEAR "CLEAR\n";
print DARK "DARK\n";
print UNDERLINE "UNDERLINE\n";
print UNDERSCORE "UNDERSCOPRE\n";
print BLINK "BLINK\n";
print REVERSE "REVERSE\n";
print CONCEALED "CONCELED\n";
print BLACK "BLACK\n";
print RED "RED\n";
print GREEN "GREEN\n";
print YELLOW "YELLOW\n";
print BLUE "BLUE\n";
print MAGENTA "MAGENTA\n";
print CYAN "CYAN\n";
print WHITE "WHITE\n";
print ON_BLACK "ON_BLACK\n";
print ON_RED "ON_RED\n";
print ON_GREEN "ON_GREEN\n";
print ON_YELLOW "ON_YELLOW\n";
print ON_BLUE "ON_BLUE\n";
print ON_MAGENTA "ON_MAGENTA\n";
print ON_CYAN "ON_CYAN\n";
print ON_WHITE "ON_WHITE\n";
    2. 输出结果:
   


2. perl 格式化字符串中关键字

    1. 测试程序: test-color
#!/usr/bin/perl

#打印颜色必须引入的模块和设置
use Term::ANSIColor qw(:constants);
$Term::ANSIColor::AUTORESET = 1;

&print_color("hello,world,hello,java,hello,js\n","java","hell");

#desc 输出有颜色的字符串
#para1 接收至少两个参数以上,第一个参数为要格式化的字符串,之后的参数为要使用颜色的字符串
sub print_color(){
die "print_color 方法需要至少两个参数" if @_ <2;
#获取要格式化颜色的字符串
my $line = shift @_;

#获取要高亮的字符串数组
@patterns = @_;

#获取要高亮显示的字符串数组,拼接正则模式
my $spectors = (shift @_) . '+';
foreach(@_){
$spectors .= "|$_+";
}
#按正则模式进行分组
my @arrays = split(/($spectors)/, $line);

#输出结果
for my $item(@arrays){
#直接使用@patterns 数组反向匹配,数组内插时,每个字符串直接会有空格
if("@patterns" =~ $item){
print BOLD RED $item;
} else {
print $item;
}
}
}

    2. 运行结果:

    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: