AI智能
改变未来

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


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

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

目录

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

文章目录

一、 正则表达式

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

2、正则表达式的特点

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

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

一、 正则表达式

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

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

2、正则表达式的特点

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

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

  • 行首尾及单字匹配
类型 含义 示例 说明
^ 匹配行首 ^abc 以abc开头的行
^# 以#号开头的行(比如注释行)
$ 匹配行尾 abc$ 以abc结尾的行
^$ 空行
. 单个字符 . 除换行符(\\n)以外的任意单个字
[code]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
[code]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           找rotegrep \"ro{2}t\" /etc/passwd           找root
  • 范围内单字匹配

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

[code]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      找不数字的行
  • 整体及边界匹配

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

[code]grep \"\\(0:\\)\\{2\\}\" /etc/passdw  找0:0:egrep \"(0:){2}\" /etc/passwd       使用扩展正则,效果同上grep -E \"(0:){2}\" /etc/passwd     使用扩展正则,效果同上egrep \"a|b\" /etc/passwd           找含a或者begrep \"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前面要空格
  • 未定匹配次数
[code]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)》

 

 

 

 

 

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 快速了解shell编程语言,及shell脚本编写使用(4)