Shell脚本正则表达式(一)

   日期:2020-09-15     浏览:120    评论:0    
核心提示:Shell脚本正则表达式(一)正则表达式概述基础正则表达式——grep,sed命令支持扩展正则表达式正则表达式概述1.正则表达式定义1).正则表达式,又称正规表达式、常规表达式在代码中常简写为regex 、regexp或PE2).是使用单个字符串来描述,匹配一系列符合某个句法规则的字符串例:邮件服务处于过滤垃圾邮箱,最常用正则表达式2.正则表达式组成1).普通字符大小写字母,数字,标点符号及一些其他符号2).元字符在正则表达式中具有特殊意义的专用字符基础正则表达式——grep,sed

Shell脚本正则表达式(一)

  • 正则表达式概述
    • 基础正则表达式——grep,sed命令支持
      • 基础正则表达式常见元字符
        • 扩展正则表达式----egrep、awk命令支持

正则表达式概述

1.正则表达式定义
1).正则表达式,又称正规表达式、常规表达式
在代码中常简写为regex 、regexp或PE
2).是使用单个字符串来描述,匹配一系列符合某个句法规则的字符串
例:邮件服务处于过滤垃圾邮箱,最常用正则表达式
2.正则表达式组成
1).普通字符
大小写字母,数字,标点符号及一些其他符号
2).元字符
在正则表达式中具有特殊意义的专用字符

基础正则表达式——grep,sed命令支持

1.基础正则表达式示例
1).查找特定字符

命令 作用
-n 显示行号
-i 不区分大小写
-v 反向查找

创建测试文件
[root@localhost ~]# vim test.txt

he was short and fat.
He was wearing a blue polo shirt with black pants.
The home of Football on BBC Sport online.
the tongue is boneless but it breaks bones.12!
google is the best tools for search keyword.
The year ahead will test our political establishment to the li
PI=3.141592653589793238462643383249901429
a wood cross!
Actions speak louder than words

#woood #
#woooooood #
AxyzxyzxyzxyzC
I bet this place is really spooky late at night!
Misfortunes never come alone/single.
I shouldn't have lett so tast.

查找the并显示行号

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


查找the并不区分大小写

[root@localhost ~]# grep  -ni  'the' test.txt


反向查找不包含the的行

[root@localhost ~]# grep -nv 'the' test.txt


2).利用中括号"[ ]"来查找集合字符

[ ]---里面无论有多少字符,都代表一个字符,为'或'的关系
[^]---括号里面的'^'是取反的意思

查找包含shirt和short的行

[root@localhost ~]# grep -n 'sh[io]rt' test.txt 


查找重复单个字符’oo’的行

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


查找’oo’前面不是’w’的行

[root@localhost ~]# grep -n '[^w]oo' test.txt 


查找’oo’前面不是小写字母的行

[root@localhost ~]# grep -n '[^a-z]oo' test.txt 


查找’oo’前面不是大写字母的行

[root@localhost ~]# grep -n '[^A-Z]oo' test.txt


查找包含数字的行

[root@localhost ~]# grep -n '[0-9]' test.txt 


3).查找行首’^‘与行尾字符’$'
小数点’.‘在正则表达式中为元字符,需要使用转义字符’'将其转化为普通字符
查找以小数点’.'结尾的行

[root@localhost ~]# grep -n '\.$' test.txt 


查找空行

[root@localhost ~]# grep -n '^$' test.txt 


4).查找任意一个字符用’.’,重复字符用’*'
查找以’w’开头,'d’结尾共4个字符的行

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


*—表示重复零个或多个前面的单字符
例:'oo*'---第一个o必须存在,第二个o可以是0个或多个,所以o,oo,ooo,等都符合规则
查询至少包含两个o以上的字符串

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


查找以’w’开头,中间至少包含一个’o’的,'d’结尾的行

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


查找以’w’开头,'d’结尾,中间字符可有可无的行

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


查询任意数字的行

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


5).查找连续字符范围{}
使用’.‘和’*'可以设置零个或无限个重复的字符
如果要限制一个范围则使用’{}'
查看2个o的字符

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


查看以’w’开头,'d’结尾,中间为2,5个o的字符串

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

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

元字符 作用
^ 匹配行首。
$ 匹配行尾。
. 匹配任意字符
\ 转义符,屏蔽一个元字符的特殊意义
* 0个或多个*字符之前的那个普通字符
[] 匹配字符集合
[^] 取反
\{n,\} 匹配前面字符至少出现n次
\{n,m\} 匹配前面字符出现n~m次

扩展正则表达式----egrep、awk命令支持

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

元字符 作用
+ 重复一个或者一个以上的前一个字符
? 零个或者一个的前一个字符
| 零个或者一个的前一个字符
() 查找 “组” 字符串
()+ 辨别多个重复的组

例如:

[root@localhost ~]# egrep -n 'wo+d' test.txt
执行该命令即可查询到"wood""woood""wooooood"等字符串

[root@localhost ~]# egrep -n 'bes?t' test.txt
执行该命令即可查询到"bet""best"这两个字符串

[root@localhost ~]# egrep -n 'of|is|on' test.txt
执行该命令即可查询到"of",或者"is",或者"on"字符串

[root@localhost ~]# egrep -n 't(a|e)st' test.txt
"tast""test"因为这两个单词的"t""st"是重复的,所以将"a""e"列入"()"符号当中,并以"|"分隔,即可查询"tast"
或者"test"字符串

[root@localhost ~]# egrep -n 'A(xyz)+C' test.txt
该命令是查询开头的"A"结尾是"C",中间有一个以上的"xyz"字符串的意识

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服