码迷,mamicode.com
首页 > 其他好文 > 详细

grep及正则表达式详解

时间:2015-08-12 19:43:38      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:grep 正则

grep正则表达式
1、grep定义

Globally search a Regular Expression and Print
全局搜索(匹配正则表达式的)并打印


扩展命令:
egrep:扩展grep,相当于grep -E 命令,使用扩展正则匹配。
fgrep:fast grep,不支持正则匹配的grep,只能匹配字符本来的意义。


grep与egrep的区别是egrep支持更多扩展的正则


grep参数(#代表数字)
-v:显示不匹配的行
-i:忽略字母大小写
-o:只打印匹配的字符
-E:扩展正则表达式
-A #:显示匹配的行以及匹配行后的#行
-B #:显示匹配的行以及匹配行前的#行
-C #:显示匹配的行以及匹配行前后的各#行
--color:定义匹配字符的颜色
 
     颜色标记匹配的字符
     alias grep=‘grep --color=auto‘
     alias egrep=‘egrep --color=auto‘

     永久生效修改文件/etc/bashrc添加上面两行内容

正则表达式

一、字符匹配
. :匹配一个字符
[]:匹配范围内任意单个字符
[^]:匹配范围外任意单个字符


     例:
     [0-9]  [[:digit:]] 匹配数字
     [a-z]  [[:lower:]] 匹配小写字母
     [A-Z]  [[:upper:]] 匹配大写字母 
     [[:space:]]  匹配所有空白字符(空格,制表符,新行)
     [0-9a-zA-Z] [[:alnum:]]  匹配字母及数字
     [a-zA-Z]    [[:alpha:]]  匹配字母
     [[:punct:]]  标点符号


二、次数匹配
* :任意次数
 .*:任意长度的任意字符
\?:0次或1次
\+:1次或多次
\{m\}:m次
 \{m,n\}:至少m次,至多n次
 \{0,n\}:至多n次
 \{m,\}:至少m次


三、定位匹配
^:匹配行首
$:匹配行尾
\<,\b:匹配单词词首
\>,\b:匹配单词词尾


四、分组和引用
\(\):小括号内的为一组
\1,\2,……引用分组,1为第一个小括号内容,2为第二个小括号内容……


元字符总结:
正则表达式及grep
     字符匹配:. [] [^]
     次数匹配:* \+ \? \{\}
     定位匹配: ^ $ \< \>
     分组和后向引用:\(\) \1,\2……
 
扩展正则表达式及egrep
     字符匹配:. [] [^]
     次数匹配:* + ? {}
     定位匹配:^ $ \< \>
     分组和后向引用:() \1,\2……
     或者:a|b

例:
1、字符匹配           
     普通字符:# grep ‘root‘ /etc/passwd    
     .:# grep ‘r..t‘ /etc/passwd    
     []:# grep ‘[rt].‘ /etc/passwd     
     [^]:# grep ‘[^a-z]‘ /etc/passwd   
 
2、次数匹配:
     *:# grep ‘ro*t‘ /etc/passwd
     .*:# grep ‘r.*t‘ /etc/passwd
     \+:# grep ‘ro\+t‘ /etc/passwd
     +:# egrep ‘ro+t‘ /etc/passwd
          # grep -E ‘ro+t‘ /etc/passwd
     \?:# grep ‘ro\?t‘ /etc/passwd
     ?:# egrep ‘ro?t‘ /etc/passwd
         # grep -E ‘ro?t‘ /etc/passwd
     \{\}:# grep ‘ro\{2\}t‘ /etc/passwd
             # grep ‘ro\{0,2\}t‘ /etc/passwd
     {}:# egrep ‘ro{2}t‘ /etc/passwd
          # grep -E ‘ro{2}t‘ /etc/passwd
          # egrep ‘ro{0,2}t‘ /etc/passwd
          # grep -E ‘ro{0,2}t‘ /etc/passwd/

3、定位匹配:
     ^:# grep ‘^r‘ /etc/passwd
     $:# grep ‘h$‘ /etc/passwd
     \<:# grep ‘\<ro‘ /etc/passwd
     \>:# grep ‘ot\>‘ /etc/passwd
 
4、分组和引用:
     \(\):# grep ‘^\(\<[a-z]\{4\}\>\).*\1$‘ /etc/passwd
     ():# egrep ‘^(\<[a-z]{4}\>).*\1$‘ /etc/passwd


本文出自 “从头再来” 博客,请务必保留此出处http://4708705.blog.51cto.com/4698705/1684146

grep及正则表达式详解

标签:grep 正则

原文地址:http://4708705.blog.51cto.com/4698705/1684146

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!