快速了解shell编程语言,及shell脚本编写使用(4)

5 篇文章 0 订阅
5 篇文章 2 订阅

shell脚本编程(4)——正则表达式

这一章主要写的是shell脚本中的正则表达式,能够快速了解shell脚本中的一些常用的技能,能够快速掌握shell中的一些快捷功能(* ^ - ^ *)

目录

shell脚本编程(4)——正则表达式

文章目录

一、 正则表达式

1、正则表达式概述(Regular Express)

2、正则表达式的特点

3、正则表达式基本元字符

4、扩展正则与基本正则比较


一、 正则表达式

1、正则表达式概述(Regular Express)

  • 正则表达式是对字符串操作的一种逻辑公式
  • 使用符号配合某种工具,可以对文档过滤、筛选
  • 通常被用来检索、替换那些符合某个模式(规则)的文本

2、正则表达式的特点

  • 灵活性、逻辑性和功能性非常强;
  • 可以迅速地用极简单的方式达到字符串的复杂控制。

3、正则表达式基本元字符

  • 行首尾及单字匹配
类型含义示例说明
^匹配行首^abc以abc开头的行
^#以#号开头的行(比如注释行)
$匹配行尾abc$以abc结尾的行
^$空行
.单个字符.除换行符(\n)以外的任意单个字
grep  “^root” /etc/passwd          找以root开头的行
grep  “bash$” /etc/passd           找以bash结尾的行
grep “r…”  /etc/passwd             含r开头的四字符的行
grep "ro.." /etc/passwd            含ro开头的四个字符的行
grep "roo." /etc/passwd            含roo开头的四个字符的行
  • 限定次数
类型含义示例说明
{n}匹配n次(ab){3}匹配ababab
{n,m}匹配n-m次(ab){1,3}匹配ab、abab、ababab
{n,}匹配至少n次(ab){2,}匹配2个及以上连续的ab
grep "rao\{2\}t" user                找root,o只能出现2次
grep "rao\{1,2\}t" /etc/passwd       找raot 或者 raoot, o是1个或0是2个
grep "rao\{2,\}t" /etc/passwd        找raoot、raooot、raoo…t,含oo两个以上
grep "0:\{2\}" /etc/passwd           找0::
grep "\(0:\)\{2\}" /etc/passdw       找0:0:
egrep "(0:){2}" /etc/passwd          使用扩展正则,效果同上
grep -E "(0:){2}" e/tc/passwd        使用扩展正则,效果同上
egrep "ro{1}t" /etc/passwd           找rot 
egrep "ro{2}t" /etc/passwd           找root
  • 范围内单字匹配

     (匹配指定字符集合内的任何一个字符,[ ] 内加^可取反)

grep  "[rot]"  /etc/passwd      找含root字母的行
grep  "[a-z]"  /etc/passwd      找含有小写字母的行
grep  "[A-Z]"  /etc/passwd      找含有大写字母的行
grep  "[0-9]"  /etc/passwd      找含有数字的行
grep  "[^0-9]" /etc/passwd      找不数字的行
  • 整体及边界匹配

     \ 为转义符号,可以为一些普通字符赋予特殊含义、或者将一些特殊字符变为普通字符

grep "\(0:\)\{2\}" /etc/passdw  找0:0:
egrep "(0:){2}" /etc/passwd       使用扩展正则,效果同上
grep -E "(0:){2}" /etc/passwd     使用扩展正则,效果同上
egrep "a|b" /etc/passwd           找含a或者b
egrep "the\b" /etc/passwd         找the,e后面只能为空
egrep "\<ro" /etc/passwd          找含ro开头
egrep "\<the\>" /etc/passwd       找the,前后为空
egrep "\woot" /etc/passwd         找*oot ,w代表任意
egrep "\sthe" /etc/passwd         找the ,the前面要空格
  • 未定匹配次数
egrep "(the)+" /etc/passwd      找一个the或者多个
egrep "(the)?" /etc/passwd      找0个the或者1个
egrep "(the)*" /etc/passw       找0个the或者连续多个
egrep "(the).*" /etc/passwd     任意长度的任意字串

4、扩展正则与基本正则比较

  • 扩展正则表达式的元字符、字符匹配、匹配次数、位置锚定、分组与基本正则表达式基本相同;
  • 用法相似,除了词首、词尾锚定一样,其他只是在基本正则表达式中去掉转义字符
  • 与基本正则表达式的比较:写法上比较简单,去掉了大量的转义字符;但需要匹配特殊字符时,扩展正则表达式需将特殊字符用 [ ] 括起来使用,这时用基本正则表达式比较方便

结束啦
这篇的基本介绍就先写到这里,后面会继续更新shell脚本的一些常用的用法以及后面企业中一些实用的shell脚本的运用,感谢你们的浏览,也希望对你们有所帮助,你的点赞是我努力的动力,谢谢你们!

上一篇《shell脚本编程(3)》

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值