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