Who am I

我的照片
Hefei, Anhui, China
Research Fields: Satellite Geodesy

2012年2月10日星期五

Shell grep命令

grep是global regular expression print的缩写,使用户可以在文件中查找包含某个单词或词组的行。


grep的基本语法
grep [options] pattern files
其中:pattern可以是使用正则表达式的模式匹配符或者就是一个word;files可以是一个文件或多个文件序列(搜索结果中会给出对应的文件名),也可以为空(当没有提供files时,默认搜索当前目录下的所有文件)。
两个特例:
grep pattern1 | pattern2 files      显示匹配pattern1或pattern2的内容
grep pattern1 files | grep pattern2 显示即匹配pattern1又匹配pattern2的内容

常用选项:
-c     只输出匹配行的计数,不显示匹配行的内容  
-i     匹配文本时忽略大小写
-l     只列出匹配的文件名
-L     列出不匹配的文件名
-v     显示不包含匹配文本的所有航
-n     显示匹配行及行号
-d     后接的不是文件,而是一个目录
-H     显示文件名和行号(若有路径,会显示路径)
-h     不显示匹配行所在的文件名
-r     不仅搜索当前目录,还搜索目录下的子目录
-w     只匹配单词,而不是单词的一部分(如"magic"而不是"magical"的一部分)

常用举例:
1. grep "sort" *.doc         在所有.doc文件里搜索含sort字符串的行,并打印
2. grep -c "48" data.doc     输出文档中含有48字符的行数
3. grep -n "48" data.doc     显示所有匹配48的行和行号
4. grep -vn "48" data.doc    输出所有不包含48的行
5. grep -i "ab" data.doc     输出所有包含ab或Ab,AB,aB的字符串的行
6. grep '[239].' data.doc    输出所有含有以2,3或9开头的,并且是两个数字的行
7. grep '^[^48]' data.doc    不匹配行首是48的行
8. grep '[a-z]\{5\}' aa      显示所有包含字符串至少有5个连续小写字符的字符串的行
9. grep -r                   明确要求搜索子目录
10.grep -d skip              忽略子目录

没有评论:

发表评论