Linux命令(1) grep

来源:互联网 发布:数据归一化处理 编辑:程序博客网 时间:2024/06/16 11:50

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. 举例

  1. 选择空行
  2. 选择以root开头的行
  3. 选择以sh结束的行
  4. 匹配a后面跟了任意一个数字或字母的行
  5. 匹配0或1个a后面跟了个b的行
  6. 匹配最少一个a,最多3个a后面跟了一个b的行
  7. 锚定单词admin的行
  8. 匹配自少出现一次ad,最多出现3次ad的行

7. 参考资料

  1. http://www.linuxidc.com/Linux/2013-07/87919.htm
  2. http://www.linuxidc.com/Linux/2013-07/87919p2.htm
  3. man grep
0 0