5.使用正则表达式
问题
本案例要求熟悉正则表达式的编写,完成以下任务:
利用egrep工具练习正则表达式的基本用法
提取出httpd.conf文件的有效配置行
编写正则表达式,分别匹配MAC地址、E-Mail邮箱地址、IP地址、主机名
方案
步骤
实现此案例需要按照如下步骤进行。
步骤一:正则表达式匹配练习
1)典型的应用场合:grep、egrep检索文本行
使用不带-E选项的grep命令时,支持基本正则匹配模式。比如“word”关键词检索、“^word”匹配以word开头的行、“wordKaTeX parse error: Expected 'EOF', got '#' at position 47: …: [root@svr5 ~]#̲ grep '^r' /etc…’ /etc/hosts
127.0.0.1 localhost.localdomain localhost
若希望在grep检索式同时组合多个条件,比如输出以“root”或者以“daemon”开头的行,这时候基本正则就不太方便了(“或者”必须转义为“|”):
[root@svr5 ~]# grep ‘root|daemon’ /etc/passwd //搜索无结果
[root@svr5 ~]#
[root@svr5 ~]# grep ‘root|daemon’ /etc/passwd //正确获得结果
root❌0:0:root:/root:/bin/bash
daemon❌2:2:daemon:/sbin:/sbin/nologin
而若若使用grep -E或egrep命令,可支持扩展正则匹配模式,能够自动识别 |、{ 等正则表达式中的特殊字符,用起来更加方便,比如:
[root@svr5 ~]# grep -E ‘root|daemon’ /etc/passwd
root❌0:0:root:/root:/bin/bash
daemon❌2:2:daemon:/sbin:/sbin/nologin
或者
[root@svr5 ~]# egrep ‘root|daemon’ /etc/passwd
root❌0:0:root:/root:/bin/bash
daemon❌2:2:daemon:/sbin:/sbin/nologin
使用grep -E 与 使用egrep命令完全等效,推荐使用后者,特别是涉及到复杂的正则表达式的时候。
2)grep、egrep命令的-q选项
选项 -q 表示 quiet(静默)的意思,结合此选项可以只做检索而并不输出,通常在脚本内用来识别查找的目标是否存在,通过返回状态 KaTeX parse error: Expected 'EOF', got '#' at position 110: …: [root@svr5 ~]#̲ grep '^192.168… —— 匹配行首、行尾
输出默认运行级别的配置记录(以id开头的行):
[root@svr5 ~]# egrep ‘^id’ /etc/inittab
id:3:initdefault:
输出主机名配置记录(以HOSTNAME开头的行):
[root@svr5 ~]# egrep ‘^HOSTNAME’ /etc/sysconfig/network
HOSTNAME=svr5.tarena.com
统计本地用户中登录Shell为“/sbin/nologin”的用户个数:
[root@svr5 ~]# egrep -m10 ‘/sbin/nologinKaTeX parse error: Expected 'EOF', got '#' at position 468: …n [root@svr5 ~]#̲ egrep -c '/sbi…’ /etc/passwd
32 //结合 -c 选项输出匹配的行数
使用 -c 选项可输出匹配行数,这与通过管道再 wc -l的效果是相同的,但是写法更简便。比如,统计使用“/bin/bash”作为登录Shell的正常用户个数,可执行:
[root@svr5 ~]# egrep -c ‘/bin/bashKaTeX parse error: Expected 'EOF', got '#' at position 34: …者 [root@svr5 ~]#̲ egrep '/bin/ba…’ /etc/passwd | wc -l
26
4)基本元字符 . —— 匹配任意单个字符
以/etc/rc.local文件为例,确认文本内容:
[root@svr5 ~]# ca
使用正则表达式
最新推荐文章于 2023-01-11 23:15:35 发布
![](https://img-home.csdnimg.cn/images/20240709112858.png)