我写了一个简单的PHP shell脚本,它解析文件并输出某些元素 它产生了大量的输出。在不同的(bash)颜色中,绿色表示OK,黄色表示警告,红色表示错误等。
在开发过程中,我想过滤掉一些行。例如,包含红色文本的所有行。
我可以使用grep
(或其他)命令吗?
答案 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行或警告的选项。