我写了一个简单的PHP shell脚本,用于解析文件并输出某些元素。
它生成大量的输出。在不同的(bash)颜色中,绿色表示确定,黄色表示警告,红色表示错误等。grep on color lines
在开发过程中,我想过滤一些行。例如包含红色文字的所有行。
我可以使用grep
(或其他)命令吗?
我写了一个简单的PHP shell脚本,用于解析文件并输出某些元素。
它生成大量的输出。在不同的(bash)颜色中,绿色表示确定,黄色表示警告,红色表示错误等。grep on color lines
在开发过程中,我想过滤一些行。例如包含红色文字的所有行。
我可以使用grep
(或其他)命令吗?
我不知道你的输入是什么样子,但作为一个概念证明你可以筛选ls
输出使用绿颜色的任何行:
ls --color=always | grep '^[\[01;32m'
其它颜色查找表可以在这里找到:http://en.wikipedia.org/wiki/ANSI_escape_code#Colors
提示:如果你不知道,上面的^[
部分应该像按Ctrl-V输入Esc键(或实际上Ctrl-VCtrl- [在大多数终端上)。 我敢肯定,会有一些选项给grep,使其了解\x1B
代替,但我还没有找到它
这篇出色的文章让人想起。为什么你永远不应该解析国会议员的输出http://mywiki.wooledge.org/ParsingLs 没有人反对你的答案,这是一个很好的答案! – 2011-06-08 11:38:13
我知道了:)有人会说我的屁股企图强迫多彩的输出。在这种情况下,完全可以这么做,因为目标是显示包含_green_的ANSI转义的行。关于所述路线的来源,不能推定任何含义,更不用说任何含义。一行的定义在UNIX过滤器上下文中被广泛接受:) – sehe 2011-06-08 11:46:45
谢谢,这就是我一直在寻找的东西! – 2011-06-08 13:46:28
据我了解,你解析输入一次,反正上色,对吗?为什么不在同一功能中“切断”警告/错误?使你的脚本使用的命令行选项,例如myscript --nowarnings
有getopt
为PHP教程here
我不知道任何PHP的,但类似(伪):
paintred(string, show){
match(string);
if(show){
print(string) in red;
}
else return 0;
}
凡show
会取决于命令行选项。
这样你只能解析一次文件,并且给未来的用户一个跳过OK行或警告的选项。
此处的示例输入/输出将会很好。 – aioobe 2011-06-08 11:27:55