正则表达式:
通配符: * ? [] ^
*.txt
??.txt
[0-9] [a-z] [A-Z] [0-9a-Z]
[^0-9]和[!0-9] //取反,非数字
*5? : 倒数第二位第5的
{[abc],*.txt} :匹配a 和b 和c 和以.txt结尾
基本正则表:
^ :匹配行首
$ :匹配行尾
[]: 集合,匹配集合中任意的单个字符
[^]:对集合进行取反
. :匹配任意单个字符
* :匹配前一个字符任意次数,*不能单独使用
{n,m}:匹配前一个字符n到m次
{n}:匹配前一个字符n次
{n,}:匹配前一个字符n次以上
() :保留
扩展正则表:
+ :最少匹配一次 1-∞
? :最多匹配一次 0-1 包含没有的情况
{n,m}:匹配n到m次
():组合为整体,保留
| :或者
\b :单词边界
grep查询匹配的行
egrep检索文本行
测试文件:/etc/passwd
1.输出以“r”开头的行:
#grep `^r` /etc/passwd
2.输出以nologin结尾的行:
#grep `/bin/bash$` /etc/passwd
3.组合多个条件,查找以root开头的行或者hhhh开头的行
#egrep `^root|^hhhh` /etc/passwd
#grep -E `^root|^hhhh` /etc/passwd
#egrep `^root\|^hhhh` /etc/passwd
grep中的选项:
-q :表示静默,只检索不输出
-c :可输出匹配的行数
4.输出/etc/passwd中非空行
#egrep '.' /etc/passwd
#egrep -v '^$' /etc/passwd
测试文件/etc/rc.local
5.输出包括f,ff,fff,...的行,输出f至少出现一次
#egrep `f+` /etc/rc.local
6.输出包含init initial的行 ?
#egrep ab[c-i]? /etc/rc.local
7.输出包含stu stuf stuff...的行
#egrep stuf* /etc/rc.local
8.输出所有行 .* 包含空行的情况
9.输出以r开头,并且以nologin结尾的行,中间任意字符
#egrep `r.*nologin$` /etc/rc.local
10.输出abababab ab连续出现了4次 : `(ab){4}`
11.输出abc abd: `ab[cd]`
12.输出包括以hh结尾的单词的行 : 'hh\b' 或者 'hh\>' '\hh\b'
匹配MAC地址:
以冒号分隔一共6位,是一个6进制: 00:50:C0:C5:R2:C5
'[0-9a-fA-F]{2}:[0-9a-fA-F]{2}:[0-9a-fA-F]{2}:[0-9a-fA-F]{2}:
[0-9a-fA-F]{2}:
[0-9a-fA-F]{2} :'