一、正则表达式
1、作用
- 由一类特殊字符(元字符)组成的表达式,使用它可以去匹配一些具有相同特征的文本
2、匹配单个字符的元字符
. 任意单个字符,除\n以外
[root@node01 ~]# grep "r..t" /etc/passwd
[rkt] 或者的意思 , 方括号中任意单个字符
[root@node01 ~]# grep "^[rhm]" /etc/passwd
[a-z] [A-Z] [a-zA-Z] [0-9] [a-zA-Z0-9]
[root@node01 ~]# grep "^[0-9]" /usr/share/dict/words
[[:space:]] 任意单个空白
[root@node01 ~]# grep "[[:space:]]" /etc/passwd
3、匹配字符出现的次数
* 前一个字符连续出现任意次 ab*, a, ab abb abbbbbbbbbbbbbbbbbbbbb
[root@node01 ~]# grep "[0-9]*" /etc/fstab
? 前一个字符最多出现1次, 可有可无 ab?
[root@node01 ~]# grep -E "a[0-9]?b" /opt/file01
+ 前一个字符至少出现1次 ab+ ab, abbbbbb
[root@node01 ~]# grep -E "a[0-9]+b" /opt/file01
{4} 前一个字符精确出现4次
[root@node01 ~]# grep -E "a[0-9]{2}b" /opt/file01
{2,5}, {2,}
[root@node01 ~]# grep -E "[0-9]{3,}" /usr/share/dict/words
() 分组
[root@node01 ~]# grep -E "(ab){2,}" /usr/share/dict/words
4、匹配字符出现的位置
^abc abc$ ^$
[root@node01 ~]# grep -E "^[A-Z]{2}" /usr/share/dict/words
[root@node01 ~]# grep -E "^[0-9]+$" /usr/share/dict/words
[root@node01 ~]# grep -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" /opt/file01
[root@node01 ~]# grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" /opt/file01
[root@node01 ~]# grep -E "[a-zA-Z0-9_]+@[a-z0-9]+\.[a-z]+" /opt/file01