grep最常用命令

cly@topgun /cygdrive/c/Users/cly/Desktop/apktool/shuqi
$ grep main_navtop_f *xml -RHn --include="*.xml" --exclude="*.java" --exclude-dir=".svn" --color ./
./res/values/public.xml:221:    <public type="drawable" name="main_navtop_f" id="0x7f0200a3" />
./res/values/public.xml:270:    <public type="drawable" name="skin1_main_navtop_f" id="0x7f0200de" />

./res/values/public.xml:285:    <public type="drawable" name="skin2_main_navtop_f" id="0x7f0200f2" />


grep命令功能强大,但参数较多,以上这条命令常用用法都有了,记录下来备用。


参数解释如下:

-R 递归目录查询

-H 显示匹配行所在的文件的文件名

-n 显示匹配行在匹配文件中的行号


--include= 查询什么类型的文件,跟一个pattern

--exclude= 排除什么类型的文件,跟一个pattern,在上面的命令中这一句是多余的,它跟--include一次肯定只使用一个

--exclude-dir= 排除什么目录,跟一个pattern


--color 彩色显示结果,文件名,行号,匹配段会彩色显示


./ 表示查询当前目录


跟find命令配合也可实现上面这些功能。

cly@topgun /cygdrive/c/Users/cly/Desktop/apktool/shuqi
$ find ./ -type f -name "*.xml" -exec grep -Hn --color main_navtop_f {} \;
./res/values/public.xml:221:    <public type="drawable" name="main_navtop_f" id="0x7f0200a3" />
./res/values/public.xml:270:    <public type="drawable" name="skin1_main_navtop_f" id="0x7f0200de" />
./res/values/public.xml:285:    <public type="drawable" name="skin2_main_navtop_f" id="0x7f0200f2" />


--exclude 在find命令中可以用-not -name "*.java" 来实现。 


#2012.9.3加入

grep 匹配多个关键字

grep -E "word1|word2|word3" file满足任意条件(word1、word2和word3之一)将匹配

grep word1 file | grep word2 |grep word3 必须同时满足三个条件(word1、word2和word3)才匹配

#加入完毕


#2012.10.29加入

grep -I 不匹配二进制文件,是大写的i,而不是小写的L,小写的l表示输出匹配的文件列表。

#加入完毕


你可能感兴趣的:(xml)