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)》