加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

常用正则表达式实例讲解

发布时间:2020-12-14 01:29:54 所属栏目:百科 来源:网络整理
导读:S hell正则表达式 正则表达式:处理大量的字符串而定义的规则和方法,通过规定的符号 的组合 迅速的找到需要的内容。 注意事项: 1正表达式的应用广泛,Linux中常用的正则表达式的命令:grep(egrep),sed,awk 2.Linux的正则表达式和命令行中的通配符有本

Shell正则表达式

正则表达式:处理大量的字符串而定义的规则和方法,通过规定的符号的组合迅速的找到需要的内容。

注意事项:

1正表达式的应用广泛,Linux中常用的正则表达式的命令:grep(egrep),sed,awk

2.Linux的正则表达式和命令行中的通配符有本质的区别

Eg:命令行中通配符*表示匹配所有,不同于正则表达式中的*

]#ll*.sh#命令行中“*”表示匹配所有

3.文档阅读说明

文中 “]#” 表示在命令行下执行的命令即文中的绿色字体可以复制到命令航中执行

本文以实例讲解,读者可以打开虚拟机,边读边练

2014/12/4修改文中错误

基础正则表达式grep命令讲解

注意事项:

a.linux正则表达式以行为单位处理

b.为了后面便于讲解,给grep取别名,目的是给匹配到的内容带颜色显示,取别名操作如下:

]#aliasgrep=‘grep--color=auto’#只在当前shell生效,如何使永久性的生效在后文有讲解

c.注意字符集要是grep命令匹配的内容显示异常,定义字符集:LC_ALL=C

LC_ALL=C

辅助文档:

#catreTest1

IamwewinnotWEWIN

Ilikelinux

Ilikebadminntionball,billardballandchinesechess.

number23000000

number12000

HAHAHAHAHA

hahahahaha

Linux正则表达式

1)^world 以world开头的行

2)world$ 以world结尾的行

3)^$ 表示空行

Eg:

]#aliasgrep='grep--color=auto'#

]#grepIreTest1#包含I的行

doyoulikeme?butnotdoyoulikeI

]#grep'^I'reTest1#以I开头的行

]#grep'I$'reTest1#以I结尾的行

]#grep"^$"reTest1#空行

]#grep-v"^$"reTest1#排除空行

4).代表且只能代表任意一个字符

5)转义字符,有特殊意义的字符表示为普通的意义,还原其原本的意义

6)*重复一个或多个前面的一个字符,不是通配符中的表示所有的意思

7)+前面的元素或者组合必须出现一次或多次,属于扩展的,需要用egrep

8)?规定前面的组合出现零次或一次,

9).*匹配所有的字符。^.*以任意多个字符开头

]#grep"."reTest1#匹配全文,但是中间的空行会消失,要是只是单纯的匹配字符“.需要转义

]#grep"."reTest1#匹配包含“.”的行,需要脱去特殊含义。

grep"0*"reTest2#包含一个或多个0

number23000000

number12000

10)[a-z]#匹配a-z字符集合内任意一个字符集

]#grep[a-z]reTest1

IamwewinnotWEWIN

likelinux

doyoulikeme?butnotdoyoulikeI

likebadminntionball,billardballandchinesechess.

number23000000

number12000

hahahahaha

11)[asdfds]#统配a-z的任意一字符集

]#grep[asdfds]reTest1

IamwewinnotWEWIN

doyoulikeme?butnotdoyoulikeI

Ilikebadminntionball,billardballandchinesechess.

haha

]#grep[^a-z]reTest1#匹配包含除过a-z字符的行,

IamwewinnotWEWIN

Ilikelinux

doyoulikeme?butnotdoyoulikeI

Ilikebadminntionball,0);font-weight:bold;font-size:14px;font-family:'宋体';">number23000000

number12000

HAHAHAHAHA

13)^[abc][a-z]开头的行

]#grep^[a-z]reTest1

14){n,m}重复n到m次,前一个字符

15){n,}至少n次多了不限

16){n}n次

17){,m}至多m次,少了不限

注意:grep要对{转义},{{要是用egrep就不需要转义egrep相当于grep-E

grep"0{3}"reTest#0连续出现3次

grep-E"0{3}"1

grep"0{,5}"#0出现0-5次

报错,内在的bug,可以用grep"0{0,5}",两个属于等价的查询

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读