grep 使用整理 正则表达式 扩展正则表达式

名字
     grep, egrep, fgerp
 
解释:
     grep是一个最初用于Unix操作系统的命令行工具. 在给出文件列表或标准输入后, grep会对匹配一个或多个正则表达式的文本进行搜索, 并只输出匹配(或者不匹配)的行或文本.
 
用法:
     grep [option] 'PATTERN' file ...
          --color=auto
          常用选项[option]:
               -v : 反向匹配, 显示不能被模式匹配到的行.
               -o : 只显示被模式匹配到的字符串, 而非整行
               -i : 不区分字母大小写
               -E : 支持扩展的正则表达式
               -A 数字 :(After) 显示被模式匹配到的行, 还显示下方的行
               -B 数字 :(Before) 显示被模式匹配到的行, 还显示上方的行
               -C 数字 :(Context) 显示被模式匹配到的行, 显示上下文的行
               -n : 显示在文本中的行号
               -R : 递归检索
 
示    例 解    释
egrep -i 'test' path/to/file  在file中搜索不区分大小写的'test'字串, 并打印该行
egrep -o "[a-z0-9_]+@[a-z0-9]+\.[a-z]+" /path/to/file 输出file文件中所有电子邮件地址,仅内容
egrep -R -n "test_function()" . 在当前目录下包括子目录子文件中所搜,输出内容所在文件行号及内容
 
               
 
扩展的正则表达式 'PATTERN':
     egrep 使用扩展正则表达式来构建模式, 相当于grep -E
     
基本组成部分
 
正则表达式 描    述 示    例
. 匹配任意单个字符 hack. 匹配hackl和hackm,但是不能匹配hackll,hack
[] 匹配包含在[字符]之中的任意一个字符 coo[kl] 匹配cool或cook
[^] 匹配除[字符]之外的任意一个字符 9[^01] 匹配93,92 但是不能匹配91, 90
[-] 匹配[]中指定的范围中的任意一个字符 [0-3] 匹配1~3任意一个数字
^ 锚钉行的开头 ^diguo 匹配以diguo开头的行
$ 锚钉行的末尾 diguo$ 匹配以diguo结尾的行
\<char 锚钉单词的开头 \<char 匹配以char开头的单词
char\> 锚钉单词的结尾 char\> 匹配以char结尾的单词
* 匹配之前的项目0次或多次 co*l 等于 cl, col, cooooool 等
? 匹配之前的项目0次或1次 x?y, 等于 xy, x
+ 匹配之前的项目1次或多次 rollno-9+ 匹配rollno-99, rollno-9 等 但是不能匹配rollno-
() 创建一个用于匹配的字符串 ma(tri)?x 匹配max或者matrix
{m} 匹配之前的项目m次 [0-9]{3} 匹配任意一个三位数, [0-9][0-9][0-9]也可以
{m,} 匹配之前的项目至少m次 [0-9]{2,} 匹配一个2位数字或 更多位数字
{m,n} 匹配之前的项目至少m次,至多n次 [0-9]{2,3} 匹配一个2位数字,或3位数字
(m|n) 或者, 匹配|两边的任意一项 Oct (1st|2nd) 匹配 Oct 1st 或者 Oct 2nd
/ 转义字符, 将上面的特殊字符进行转义 a\.b匹配的是a.b, 但不能匹配ajb, 通过在.之前加上了\, 从而忽略了.的特殊意义
POSIX字符类 meta sequence [:xxxx:] 可以匹配到常用的字符范围
正则表达式 描    述 示    例
[:alnum:] 字母与数字字符 [[:alnum:]]+ 一个或多个数字或字母
[:alpha:] 字母字符(包括大写小写字母) [[:alpha:]]{4} 4个不区分大小写字母
[:blank:] 空格与制表符 [[:blank:]]* 0个或多个空格或制表符
[:digit:] 数字字符 [[:digit:]]? 0个或1个数字
[:lower:] 小写字母 [[:lower:]]{5,} 至少5个小写字母组成的字串
[:upper:] 大写字母 [[:upper:]]{0,5} 至多5个大写字母组成的字串
[:punct:] 标点符号 [[:punct:]] 一个标点符号
[:space:] 包括换行符,回车符,在内的所有空白字符 [[:space:]]* 0或多个任意空白字符
 

 
posted @ 2014-08-18 11:34  金零壹  阅读(649)  评论(0编辑  收藏  举报