grep彩色线条

时间:2011-06-08 11:22:39

标签: linux bash grep

我写了一个简单的PHP shell脚本,它解析文件并输出某些元素 它产生了大量的输出。在不同的(bash)颜色中,绿色表示OK,黄色表示警告,红色表示错误等。

在开发过程中,我想过滤掉一些行。例如,包含红色文本的所有行。

我可以使用grep(或其他)命令吗?

2 个答案:

答案 0 :(得分:6)

我不知道您的输入是什么样的,但作为概念验证,您可以过滤使用绿色的ls输出中的任何行:

ls --color=always | grep '^[\[01;32m'

其他颜色的查找表可在此处找到:http://en.wikipedia.org/wiki/ANSI_escape_code#Colors

提示:如果您不知道,上面的^[部分应输入为 Ctrl-V Esc (或者确实 Ctrl-V Ctrl - [在大多数终端上)。 我确信会有一些选项让grep让它理解\x1B,但我还没找到它

答案 1 :(得分:0)

据我所知,无论如何,你都会解析输入一次,对吗?为什么不在相同的功能中“删除”警告/错误?使您的脚本使用命令行选项,例如myscript --nowarnings

PHP教程here

getopt

我不知道任何php,但是像(伪代码):

paintred(string, show){
    match(string);
    if(show){
        print(string) in red;
    }
    else return 0;
}

show取决于命令行选项。

这样您只需解析一次文件,并为将来的用户提供跳过OK行或警告的选项。