首页 > 代码库 > grep 使用整理 正则表达式 扩展正则表达式

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或多个任意空白字符