您的位置:首页 > 其它

Grep 使用记录

2008-10-29 17:09 162 查看
最近做的事情比较繁琐,使用的工具更加的笨拙,全工程搜索东西是一个相当的慢,我决定使用更有效的工具来提高工作的效率,所以选择了grep。
我使用grep的选项通常如下:
grep -i -r -w -l --include=*.xml --include=*.c "functionname" .
/* 下面这个可以在根目录下面搜索比较深的子目录下面某支文件中的内容 */

grep -i -r -n --include=filename "functionname" .

-i 忽略大小写
-r 遍历目录,包括子目录
-w 表示要搜索的string是一个word,是/<word/>很方便的简单使用
-l 只列出匹配的文件名
--include=*.xml 搜索xml类型的文件,*.xml可以是其他的通配符
同这个对等的也可以使用--exclude排除不想要搜索的文件类型

发现grep Context Line Control的功能比较有帮助显示。
grep默认的选项是-o,也就是只打印match的行。但是-A num / -B num / -C num 提供了能够打印match行附近行的功能。如果在使用grep查找的时候对match行周边的行比较感兴趣可以使用这几个选项。
-A num --after-context=num
-B num --before-context=num
-C num --context=num
相对来讲,这三个选项看长选项就能猜测如何使用啦。

比较简单,但是比我使用的笨拙的项目工具而言,能够把5分钟左右的搜索减少到1分钟左右吧。
如果没有安装grep,但是在使用windows xp的话,可以使用下面的方法。
@rem 首先到工作目录下

cd workdir

findstr /I /R "/<word/>" *.UXO
@rem Add Magic 2008-10-30 13:35 The following should work as grep does but not --START--
@rem failed case number 1

@rem replace the dot with path you wanna to search recursively.
findstr /I /S "/<word/>" .

@rem failed case number 2
findstr /I /S /R "/<word/>" /D:E:/pathtobesearched

@rem failed case number 3
findstr /I /S /R "/<word/>"

@rem Add Magic 2008-10-30 13:35 ---END---
@rem Add Magic 2008-11-10 10:54 Add /s for Findstr --START--
findstr /S /I echo *.*
findstr /S /I /M echo *.bat
findstr /S /I /N echo *.bat

@rem Add Magic 2008-11-10 10:54 Add /s for Findstr ---END---
findstr也有对应grep recursive(递归)的选项/S,可以使用下。

Appendex A:
Findstr 帮助 http://www.ss64.com/nt/findstr.html FINDSTR

$Last Update: 2008-11-24 14:02 MagicPang$

$Change History:$
$2008-10-29 17:27 MagicPang Initialize this article$
$2008-10-30 13:40 MagicPang add failed case record. and add /R option to findstr$
$2008-10-30 13:44 MagicPang add appendix A: usage of Findstr$
$2008-11-10 10:55 MagicPang add example for Findstr /s$
$2008-11-21 13:00 MagicPang delete appendex A cause it's redundant add grep usage example$
$2008-11-24 14:02 MagicPang add Context Line Control Options for grep$
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: