首页 > linux > grep 正则表达式选项要记得转义
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/
版权所有 © 转载时必须以链接形式注明作者和原始出处!

2 Responses to “grep 正则表达式选项要记得转义”

  1. #1 Atom 回复 | 引用 Post:2011-04-20 14:18

    方法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}*”

    [回复]

  2. #2 simaopig 回复 | 引用 Post:2011-04-21 19:19

    @Atom
    帅气,回头试用一下。哈哈。!

    [回复]

发表评论

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)