一、正则表达式介绍
1、什么是正则表达式
正则表达式就是处理字符串的方法,它是以行为单位,通过一些特殊符号的辅助,以及相应的工具来快速搜索某指定的字符串。日常中支持正则表达式的常用工具有vi、grep、awk、sed等。
2、正则表达式用途
1)可以帮组系统管理员快速处理分析日常登录信息,相关服务的运行日志等;
2)方便文档编辑
3、正则表达式分类
1)基本正则表达式
2)扩展正则表达式
二、基本正则表达式
1、字符匹配
.:匹配任意单个字符
[]:匹配指定集合中的任意单个字符
[^]:匹配指定集合外的任意单个字符
2、匹配次数
*:匹配其前面的字符任意次
\?:匹配其前面的字符0次或1次
\+:匹配其前面的字符出现至少1次
\{m\}:匹配其前面的字符m次
\{m,n\}:匹配其前面的字符至少m次,至多n次
.*:匹配任意长度的任意字符
3、位置锚定符号
^:行首锚定
$:行尾锚定
^$:空白行
\<:词首锚定(可使用\b)
\>:词尾锚定(可使用\b)
4、分组
\(\):后向引用
模式中,如果使用\(\)实现了分组,在某行文本的检查中,如果\(\)的模式匹配到了某内容,此内容在后面的模式中可以被引用;
使用\1,\2等进行引用
5、常用的特殊符号
[[:digit:]], [0-9]代表数字
[[:lower:]], [a-z]代表小写字符
[[:upper:]], [A-Z]代表大写字符
[[:alpha:]],
[a-zA-Z]代表任意英文大小写字符
[[:alnum:]],
[0-9a-zA-Z]代表英文大小写字符及数字
[[:space:]]代表空白字符
[[:punct:]]代表标点符号
三、扩展正则表达式
1、字符匹配
与基本正则表达式一样
2、匹配次数
*:匹配其前面的字符任意次
?:匹配其前面的字符0次或1次
+:匹配其前面的字符至少1次
{m}:匹配其前面的字符m次
{m,n}:匹配其前面的字符至少m次,至多n次
3、位置锚定符号
与基本正则表达式一样
4、分组
():后向引用
四、grep的使用
1、语法格式
grep [option] ‘pattern‘filename
2、常用选项
-v:方向选取
-o:仅显示匹配到内容
-i:忽略字符大小写
-E:使用扩展正则表达式
-n:显示行号
-A#:同时显示出后面的#行
-B#:同时显示出前面的#行
-C#:同时显示出前面的#行,后面的#行
五、egrep的使用
1、语法格式
egrep ‘pattern‘ filename或者grep -E ‘pattern‘ filename
六、实例演示
1、显示/etc/passwd中含有root关键字并显示行号
# grep -n ‘root‘
/etc/passwd
2、显示/proc/meminfo文件中以大写或小写S开头的行
# grep -i ‘^s‘
/proc/meminfo
3、显示/etc/fstab中非注释行
# grep -v "^#"
/etc/fstab
4、显示/boot/grub/grub.conf中以至少一个空白字符开头的行
# grep
"^[[:space:]]\{1,\}" /boot/grub/grub.conf