所谓的正则表达式,就是用一类元字符(不表示本身意义,而表示统配或其他意义),组
合其他字符所编数出来的,能够匹配符合条件的字符。
正则表达式有基本正则表达式和扩展正则表达式两大类,
下面给大家介绍一下基本正则表达式和扩展正则表达式的一些常用的字符,
基本正则表达式:
^ 锚定行首的符合条件的内容
$ 锚定行尾的符合条件的内容
^$ 表示空白行
. 匹配任意单个字符
* 匹配进挨在其前面的字符任意次
.* 匹配任意长度的任意字符
[] 匹配指定范围内的任意字符
[^] 匹配指定范围外的任意字符
\? 匹配紧挨在其前面的字0次或1次
\{m,n\} 匹配其前面的字符至少m次,至多n次
\{0,n\} 匹配其前面的字符0-n次
\{m,\} 匹配其前面的字符至少m次
\{m\} 精确匹配m次
\< 锚定词首
\> 锚定词尾
\(\) 分组
grep的常用选项
-v 反向选取,只显示不符合模式的行
-o 只显示被模式匹配但的字符串,而不是整个行
-i 不区分字符大小写
-B n 显示前面的n行
-C n 显示后面的n行
-E 使用扩展的正则表达式 grep -E = egrep
扩展正则表达式(在这里至列出不同之处)
? 出现了0次或1次 正则表达式为\?
{m,n} 匹配前边字符最少m次,最多n次
() 分组,用法与grep类似
a|b 二选一
1,锚定/etc/passwd文件中行首为root的行
grep “^root” /etc/passwd
2,锚定/etc/passwd文件行尾为sh的行
grep “sh$” /etc/passwd
3,查找空白行
grep “^$” /etc/passwd
4,匹配a后面跟了任意单个字符的行
grep “a.” /etc/passwd
5,匹配a后面跟了任意长度字符的行
grep “a*” /etc/passwd
4,匹配a后面跟了任意长度的任意字符,再跟上b的行
grep “a.*b” /etc/passwd
5,匹配a后面跟了任意个一数字后又跟了任意一个字母的行
grep “a[0-9][a-zA-Z]” /etc/passwd
6,匹配a后面跟了任意一个数字或字母的行
grep “a[0-9a-zA-Z]” /etc/passwd
7,匹配0或1个a后面跟了个b的行
grep “a\?b” /etc/passwd
8,匹配最少一个a,最多3个a后面跟了一个b的行
grep “a\{1,3\}b” /etc/passwd
9,锚定单词admin的行
grep “\<admin\>” /etc/passwd
10,匹配自少出现一次ad,最多出现3次ad的行
grep “\(ab\)\{1,3\}” /etc/passwd