2011三月7
grep 正则表达式选项要记得转义
关于 grep 命令的介绍,大家可以参考这里:《grep 正则表达式及选项》
使用过程中,使用最多的参数就是 -v ,但是用着并不爽。
比如说,我想查找一个单词“UserService”,但是像”*.svn” 这种文件就不用显示了,我该怎么做呢?
grep -r "UserService" ./ | grep -v "svn"
但是,如果类似于含有”test、auto_load”之类的文件我也不显示,怎么做呢?我之前的做法是:
grep -r "UserService" ./ | grep -v "svn" | grep -v "test" | grep -v "auto_load"
命令很长,而且麻烦,于是就想,grep本身是按照正则表达式来当做选项的,那么我是不是可以利用到正则表达式的“或|”命令?
grep -r "UserService" ./ | grep -v "svn|test|auto_load"
很显示,执行结果显示上面的命令不符合我的需求,于是苦思不得其解。原来,在使用正则表达式选项时,要记得将”|”转义。最终命令如下:
grep -r "UserService" ./ | grep -v "svn\|prj\|test\|auto_load"
文章作者:simaopig
本文地址:http://www.xiaoxiaozi.com/2011/03/07/2031/
版权所有 © 转载时必须以链接形式注明作者和原始出处!
方法1,打开扩展选项。
grep -r “UserService” ./ | grep -v -E “svn|prj|test|auto_load”
方法2,打开排除选项。-v仅仅是在文本中进行排除,在你的场景中是在第一个grep的结果输出中排除掉属于svn的文件名。不如直接排除掉文件。
grep -r “UserService” ./ –exclude=”*.{svn,prj,test,auto_load}*”
[回复]
@Atom
帅气,回头试用一下。哈哈。!
[回复]