千家信息网

shell脚本之正则表达式(一)---grep、egrep

发表于:2024-12-12 作者:千家信息网编辑
千家信息网最后更新 2024年12月12日,正则表达式的定义正则表达式又称正规表达式、常规表达式。正则表达式是由普通字符与元字符组成的文字模式。模式用于描述在搜索文本时要匹配的一个或多个字符串。正则表达式一般用于脚本编程与文本编辑器中。很多文本
千家信息网最后更新 2024年12月12日shell脚本之正则表达式(一)---grep、egrep

正则表达式的定义

正则表达式又称正规表达式、常规表达式。正则表达式是由普通字符与元字符组成的文字模式。模式用于描述在搜索文本时要匹配的一个或多个字符串。正则表达式一般用于脚本编程与文本编辑器中。很多文本处理器与程序设计语言均支持正则表达式,在Linux 系统中常见的文本处理器如grep、egrep、sed、awk。正则表达式具备很强大的文本匹配功能,能够在文本海洋中快速高效地处理文本。



正则表达式用途

正则表达式对于系统管理员来说是非常重要的,系统运行过程中会产生大量的信息,这些信息有些是非常重要的,有些则仅是告知的信息。身为系统管理员如果直接看这么多的信息数据,无法快速定位到重要的信息,如"用户账号登录失败""服务启动失败"等信息。这时可以通过正则表达式快速提取"有问题"的信息。如此一来,可以将运维工作变得更加简单、方便。



基础正则表达式--grep

正则表达式的字符串表达方法根据不同的严谨程度与功能分为基本正则表达式与扩展正则表达式。基础正则表达式是常用的正则表达式的最基础的部分。

1.查找特定字符
-n 表示显示行号
-i 表示不区分大小写
(符合匹配标准的字符,字体颜色会变为红色)



实例演示

(1)查找出特定字符"the" 所在位置

[root@localhost ~]# grep -n 'the' /opt/httpd.conf



(2)反向查找不包含"the"字符的行

[root@localhost~]# grep -vn 'the' /opt/httpd.conf



2.利用中括号"[ ]"来查找集合字符
(1)查找"shirt"与"short"这两个字符串,"[]"中无论有几个字符,都仅代表一个字符,也就是说"[io]"表示匹配"i"或者"o"。

[root@localhost ~]# grep -n 'sh[io]rt' /opt/httpd.conf

(2)查找重复单个单词字符

[root@localhost ~]# grep -n 'oo' /opt/httpd.conf

(3)通过集合字符的反向选择"[^]"来实现查找"oo"前面不是"R"的字符串

[root@localhost ~]# grep -n '[^R]oo' /opt/httpd.conf

(4)查找"oo"前面存在小写或大写字母,其中"a-z"表示小写字母,"A-Z"表示大写字母

[root@localhost ~]# grep -n '[^a-z]oo' /opt/httpd.conf      //小写字母

[root@localhost ~]# grep -n '[^A-Z]oo' /opt/httpd.conf   //大写字母

(5)查找包含数字的行

[root@localhost ~]# grep -n '[0-9]' /opt/httpd.conf



3.查找行首"^"与行尾字符"$"
(1)查找以root开头的行

[root@localhost ~]# grep -n '^root' /etc/passwd

(2)查找以bash结尾的行

[root@localhost ~]# grep -n 'bash$' /etc/passwd

(3)查询以小写或大写字母开头的行
小写字母开头的行可以通过"^[a-z]"规则来过滤,查询大写字母开头的行使用"^[A-Z]"规则,查询不以字母开头的行使用"^[^a-zA-Z]"规则。

[root@localhost ~]# grep -n '^[a-z]' /etc/passwd

(4)查询以问号?结尾的行,需要使用转义字符"\"将具有特 殊意义的字符转化成普通字符

[root@localhost ~]# grep -n '\?$' /opt/httpd.conf


(5)查询一空白行,使用^$

[root@localhost ~]# grep -n '^$' /opt/httpd.conf

4.查找任意一个字符"."与重复字符"*"
(1)查找以w开头d结尾的字符串

[root@localhost ~]# grep -n 'w..d' /opt/httpd.conf

(2)查询包含至少两个 o 以上的字符串,可用星号元字符. 代表的是重复零个或多个前面的单字符,所以凡是包含 o、oo、ooo、ooo,等的资料都符合标准。

[root@localhost ~]# grep -n 'ooo*' test.txt

(3)查询以 w 开头 d 结尾,其中间包含至少一个 o 的字符串

[root@localhost ~]# grep -n 'woo*d' test.txt

(4)查询以 w 开头 d 结尾,中间的字符可有可无的字符串。

[root@localhost ~]# grep -n 'w.*d' test.txt

(5)查询任意数字所在行

[root@localhost ~]# grep -n '[0-9][0-9]*' /opt/httpd.conf



5.查找连续字符范围{ }
在使用"{}"字符时,需要利用转义字符"\",将"{}"字符转换成普通字符。
(1)查询两个o的字符

[root@localhost ~]# grep -n 'o\{2\}' test.txt

(2)查询以 w 开头以 d 结尾,中间包含 2~3个 o 的字符串

root@localhost ~]# grep -n 'wo\{2,\}d' test.txt

(3)查询以 w 开头以 d 结尾,中间包含 2 以上 o 的字符串

[root@localhost ~]# grep -n 'wo\{2,\}d' test.txt



基础正则表达式常见元字符

元字符作用
^匹配输入字符串的开始位置。在方括号表达式中使用,表示不包含该字符集合。
$匹配输入字符串的结尾位置。
.匹配除"\r\n"之外的任何单个字符
\将下一个字符标记为特殊字符、原义字符、向后引用、八进制转义符。
*匹配前面的子表达式零次或多次。要匹配""字符,请使用"\"
[ ]字符集合。匹配所包含的任意一个字符。例如,"[abc]"可以匹配"plain"中的"a"
^ ]赋值字符集合。匹配未包含的一个任意字符。
[n1-n2]字符范围。匹配指定范围内的任意一个字符。
{n}n 是一个非负整数,匹配确定的 n 次
{n,}n 是一个非负整数,至少匹配 n 次。
n,mm 和n 均为非负整数,其中 n<=m,最少匹配 n 次且最多匹配 m 次


扩展正则表达式

通常情况下会使用基础正则表达式就已经足够了,但有时为了简化整个指令,需要使用范围更广的扩展正则表达式。此外grep 命令仅支持基础正则表达式,如果使用扩展正则表达式,需要使用 egrep 命令。egrep 命令与 grep 命令的用法基本相似。egrep 命令是一个搜索文件获得模式,使用该命令可以搜索文件中的任意字符串和符号,也可以搜索一个或多个文件的字符串,一个提示符可以是单个字符、一个字符串、一个字或一个句子。



扩展正则表达式常见元字符

元字符作用
+重复一个或者一个以上的前一个字符
零个或者一个的前一个字符
l使用或者(or)的方式找出多个字符
()查找"组"字符串
()+辨别多个重复的组
字符 表达式 正则 字符串 查询 开头 字母 信息 文本 元字符 命令 基础 多个 大写 大写字母 小写 系统 范围 搜索 普通 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 关于网络安全的手抄报简单 易画 登录服务器的时候提示转接是什么 数据库ssid怎么查 学校图书馆数据库技术 尔雅课计算机网络技术 校园网络安全儿童手抄报图片 网络安全系统高校 软件开发管理云 数据库服务器选型 如何对数据库进行压力测试 网络安全法 统筹协调 亳州精益管理软件开发 sci数据库包括哪些杂志 冰点还原密码的数据库 河南安卓软件开发要多少钱 山西省网信办 网络安全 人间地狱哪个服务器 数据库中成绩的数据类型该用什么 Hive数据库表数据量 jsp封装数据库 沙坪坝区企业网络技术服务内容 企业网络安全问题的论文 计算机app软件开发 终端远程服务器网络安全保障 荣耀盒子怎么破解刷服务器系统 网络安全教育教案免费 腾讯云服务器nfs 映射本地 软件开发方法中哪一个对 游鱼网络技术有限公司 怎么加强校园网络安全管理
0