shell脚本之正则表达式(一)---grep、egrep
admin
2023-03-06 01:21:59
0

正则表达式的定义

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



正则表达式用途

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



基础正则表达式——grep

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

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



实例演示

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

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

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



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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

(5)查找包含数字的行

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

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



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

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

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

(2)查找以bash结尾的行

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

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

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

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

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

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

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

shell脚本之正则表达式(一)---grep、egrep
(5)查询一空白行,使用^$

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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



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

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


扩展正则表达式

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



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

元字符 作用
+ 重复一个或者一个以上的前一个字符
零个或者一个的前一个字符
l 使用或者(or)的方式找出多个字符
() 查找“组”字符串
()+ 辨别多个重复的组

相关内容

热门资讯

男子给婚外情对象转账22万余元... 男子谭某和妻子梁某在1991年结婚,婚后育有两女。2020年时,谭某结识女子贺某后,二人发生婚外情关...
钧正平:为什么说东京审判还没有... 今年是东京审判开庭80周年,我们在此回顾三个故事。东京审判现场。被偷走的骨灰1948年12月23日午...
国乒男团3比0韩国,晋级世乒赛... 北京时间5月8日,2026伦敦世乒赛男团1/4决赛,国乒男团以总比分3比0战胜韩国队,晋级半决赛。本...
美国公布首批UFO相关政府文件... 美国国防部5月8日公布了首批“与外星人、地外生命、不明空中现象(UAP)以及不明飞行物(UFO)相关...
外交部:日本军国主义侵略罪行罄... 在东京审判开庭80周年之际,《远东国际军事法庭庭审记录·全译本》日前在中国首发。外交部发言人林剑5月...
“一顿海鲜餐被收1800元”游... 5月4日晚,一湖南游客在海南三亚海棠区椰某韵餐饮店吃海鲜餐时,两份海鲜菜品及酒水饮料等被收了1800...
28国组建“矿产北约”围堵中国... 美国拉起军事、安全之外的“新北约”——被称作“矿产版北约”,目标明确:构建排他性战略资源供应体系,刻...
这场圆桌对接会直击新能源车自燃... 5月7日,挪车机器人应用场景供需对接会在成都市民营经济发展促进中心举行。会议聚焦电动汽车自燃处置难题...
驻村工作队倾情帮扶,无人机、无... 极目新闻记者 吴昌华 4月29日,大别山脚下的青云村,一架四旋翼无人机悬停在村委会小院上空,一辆颜色...
从爆炸厂区到58公里外城区,浏... 2026年5月4日16时43分,湖南浏阳华盛烟花制造燃放有限公司生产车间发生爆炸。截至5月8日12时...