您的位置:首页 > 运维架构 > Linux

Linux命令(1) grep

2016-09-10 03:40 190 查看

1. 作用

全称Global Regular Expression Print,全局正则表达式输出。使用正则表达式搜索文本,并输出。

2. 格式

grep [OPTIONS] PATTERN [FILE…]

egrep 扩展正则表达式,相当于grep -E

fgrep 不支持正则表达式元字符,搜索字符串的速度快,相当于grep -F

3. 选项

-i 忽略大小写

-n 同时输出行号

-r 递归搜索,搜索子目录

-v 反向选择,即不符合pattern的行

-l 只显示文件名,不输出对应行

-L 只列出不匹配的文件名

-c 计算符合样式的列数

-o: 只显示被模式匹配到的字串,而不是整个行

-A #:显示匹配到行时,顺带显示其后面的#个行;

-B #:显示匹配到行时,顺带显示其前面的#个行;

-C #:显示匹配到行时,顺带显示其前后的#个行;

-e 基础正则表达式

-E 扩展正则表达式

-h 查询多文件时不显示文件名

-s 不显示不存在或无匹配文本的错误信息

-w 匹配整词

-x 匹配整行

4. 正则表达式

^: 匹配正则表达式的开始行
$: 匹配正则表达式的结束行
.: 所有的单个字符
* : 有字符,长度可以为0
\<: 从匹配正则表达式的单词开头
\>: 到匹配正则表达式的单词结尾
\<word\>: 选择存在word的行
[ ]: 单个字符,如[A]即A符合要求
[^]:匹配指定范围外的任意单个字符
[ - ]: 范围,如[A-Z],即A、B、C一直到Z都符合要求
\(..\) 标记匹配字符,如'\(love\)',love被标记为1。
x\{m\} 重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。
x\{m,\} 重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。
x\{m,n\}重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。
\w 匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。
\b 单词锁定符,如: '\bgrep\b'只匹配grep。


5. 字符和字符集合

\d:数字字符匹配。等效于 [0-9]。

\s:匹配任何空白字符,包括空格、制表符、换页符等。与 [ \f\n\r\t\v] 等效。

\S:匹配任何非空白字符。与 [^ \f\n\r\t\v] 等效

\w:匹配任何字类字符,包括下划线。与“[A-Za-z0-9_]”等效。

\W:与任何非单词字符匹配。与“[^A-Za-z0-9_]”等效。

[:digit:]:所有数字, 相当于0-9 或者\d

[:space:]:空白字符 相当于\s


6. 举例

选择空行

选择以root开头的行

选择以sh结束的行

匹配a后面跟了任意一个数字或字母的行

匹配0或1个a后面跟了个b的行

匹配最少一个a,最多3个a后面跟了一个b的行

锚定单词admin的行

匹配自少出现一次ad,最多出现3次ad的行

7. 参考资料

http://www.linuxidc.com/Linux/2013-07/87919.htm

http://www.linuxidc.com/Linux/2013-07/87919p2.htm

man grep
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux