grep
- 打印匹配行
grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的
行打印出来。grep全称是Global Regular Expression Print
,表示全局正则表达
式版本,它的使用权限是所有用户。
grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [−e PATTERN | −f FILE] [FILE...]
-a
或 --text
将二进制档案视为文本文件搜寻,grep原本是搜寻文本文件,这个参数则
相当于--binary-files=text
这个参数。
-c
只输出匹配行的总数
-i
不区分大小写(只适用于单字符)
-h
查询多文件时不显示文件名
-l
查询多文件时只输出包含匹配字符的文件名
-n
显示匹配行及行号
-s
不显示不存在或无匹配文本的错误信息
-v
显示不包含匹配文本的所有
-l
只列出匹配的文件名
-L
列出不匹配的文件名
-w
只匹配整个单词,而不是字符串的一部分
-A N
或 --after-context=N
除了列出符合行之外,并且列出后N行
-B N
或 --before-context=N
除了列出符合行之外,并且列出前N行
-C N
或 --context[=N]
列出符合行之外并列出上下各N行,默认值是两行
PATTERN既可以是要搜索的字符串,也可以是一个正则表达式。输入要搜索的字符 串时最好使用双引号,而在模式匹配使用正则表达式时,注意使用单引号。
正则表达式常用参数
表1.常用的元字符
代码 说明
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\_s 表示匹配一个空格或一个换行符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
\< 标注单词的开始
\> 标注单词的结尾
表2.常用的限定符
代码 说明
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
表3.分组
代码 说明
x|y 匹配 x 或 y
[xyz] 匹配包含的任一字符
[^xyz] 反向字符集。匹配未包含的任何字符
[a-z] 字符范围。匹配指定范围内的任何字符。
[^a-z] 反向范围字符。匹配不在指定的范围内的任何字符
examples
grep 'test' d*
显示所有以d开头的文件中包含 test的行
grep 'test' aa bb cc
显示在aa,bb,cc文件中匹配test的行
grep '[a-z]\{5\}' aa
显示所有包含每个字符串至少有5个连续小写字符的字符串的行
grep man *
匹配类似于'Batman','manic',’man’等的字符串
grep '\<man' *
匹配类似于'manic'和'man',但不匹配类似于'Batman'等的字符串。
grep '\<man\>'
匹配’man’,但不匹配类似于'Batman'或'manic'等的字符串。
默认情况下,grep
只搜索当前目录,搜索子目录可以使用grep -r
递归搜索,忽
略子目录可以使用grep -d skip
,如果输出很多,您可以通过管道将其转到less
上阅读。
有一点要注意,您必需提供一个文件过滤方式(搜索全部文件的话用*
)。如果您忘
了,grep会一直等着,直到该程序被中断。如果您遇到了这样的情况,按CTRL c
,然后再试。
风生水起:http://www.cnblogs.com/end/
原文地址:http://www.cnblogs.com/end/archive/2012/02/21/2360965.html