对于Linux管理员来说,grep是日常最常用的命令,可以把匹配的字符输出,同样可以输出颜色。
创新互联长期为超过千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为凤阳企业提供专业的成都网站设计、网站制作,凤阳网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。
# grep --color 'test' /var/log/maillog
无聊练功:用perl 实现grep --color
# vi colorgrep
#!/usr/bin/perl
use Term::ANSIColor;
my $test;
if (@ARGV != 2){
die "Please use (colorgrep 'some key word' filename)\n";
}
$test = shift @ARGV;
while(){
if(/$test/i){
print "$`";
print color "bold red";
print "$";
print color 'reset';
print "$'";
}
}
这里调用了Term::ANSIColor 函数 color 有以下的参数:
clear, reset, dark, bold, underline, underscore, blink, reverse, concealed, black, red, green, yellow, blue, magenta, cyan, white, on_black, on_red, on_green, on_yellow, on_blue, on_magenta, on_cyan, and on_white
还有以下的简化使用方法
2) use Term::ANSIColor qw(:constants);
如果使用这种方法,可以直接把颜色属性放在要输出的问题前面,从而简化输出步骤。这些颜色属性有:
CLEAR, RESET, BOLD, DARK, UNDERLINE, UNDERSCORE, BLINK, REVERSE, CONCEALED, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, ON_BLACK, ON_RED, ON_GREEN, ON_YELLOW, ON_BLUE, ON_MAGENTA, ON_CYAN, and ON_WHITE
等。
例如:
print BOLD BLUE ON_WHITE “Text”, RESET, “\n”;
如果你打印完之后想清除掉字符串的格式,一定要记得在最后加上一个RESET的属性值。
例如:
use Term::ANSIColor qw(:constants);
print BOLD, BLUE, “This text is in bold blue.\n”, RESET;
3) $Term::ANSIColor::AUTORESET = 1;
对于2)的方法,如果你不想在每条打印语句后面加上RESET的话,你可以直接把$Term::ANSIColor::AUTORESET的值设为true。这样每次打印完字符,只要你的属性值之间没有逗号,系统将自动帮你清除掉颜色属性。
看一个完整的例子:
use Term::ANSIColor qw(:constants);
$Term::ANSIColor::AUTORESET = 1;
print BOLD BLUE “This text is in bold blue.\n”;
print “This text is normal.\n”;
这三种方法,使用起来各有千秋,可根据要打印的复杂程度选用。
linux无颜色输出步骤如下。
1、打开终端输入exportTERM=xterm-mono,这个命令会将终端的颜色设置为单色模式,从而关闭了彩色输出。
2、执行需要输出的命令echo"Thisisatestmessage",则看到输出的文字是黑白灰色而没有彩色,则说明无颜色输出已经生效。
Linux下printf输出颜色 printf(“\033[字背景颜色;字体颜色m字符串 \033[0m “); 参考: printf(“ \033[41;32m 字体背景是红色,字是绿色\033[0m\n”)
在linux命令行里输出带颜色的字符,需要使用ascii码里的字符属性设置描述符。
\033[0m 关闭所有属性
\033[1m 设置高亮度
\033[30m 至 \33[37m 设置前景色
\033[40m 至 \33[47m 设置背景色
其中颜色代码是:
背景颜色范围:40----49
40:黑
41:深红
42:绿
43:黄色
44:蓝色
45:紫色
46:深绿
47:白色
字(前景)颜色:30-----------39
30:黑
31:红
32:绿
33:黄
34:蓝色
35:紫色
36:深绿
37:白色
例如你要输出红色的“hello world”:
\033[31mheool world \033[0m