shell正则表达式
目录
- shell正则表达式
- 常用匹配
- 一、什么是正则表达式?
- 二、元字符
- 三、基本正则表达式元字符
- 四、扩展正则表达式元字符
常用匹配
1、匹配数字: 1+$
2、匹配Mail:[a-z0-9_]+@[a-z0-9]+.[a-z]+
3、匹配IP:[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}
egrep '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' /etc/sysconfig/network-scripts/ifcfg-ens33
一、什么是正则表达式?
正则表达式 RE,是一种字符模式,用于在查找过程中匹配指定的字符。
在大多数程序里面,正则表达式都被置于两个正斜杠之间,例如/l[oO]ve/就是有正斜杠界定的正则表达式。
它将匹配被查找的行中任何位置出现的相同模式。
在正则表达式中,元字符是最重要的概念
二、元字符
定义:元字符是这样一类字符,他们表达的是不同于字面本身的含义
shell元字符(通配符):由shell解析,如 rm -rf *.pdf ,元字符 *在shell中将其解析为任意多个字符
正则表达式元字符:由各种执行模式匹配操作的程序来解析,比如vim\grep\sed\awk\python
三、基本正则表达式元字符
元字符 | 功能 | 示例 |
^ | 行首定位符 | ^love |
$ | 行尾定位符 | love$ |
. | 匹配单个字符 | l…e |
* | 匹配前导符0到多次 | ‘ro*t’ |
.* | 任意多个字符 | 全部匹配 |
[ ] | 匹配指定范围内的一个字符 | [lL]ove |
[ - ] | 匹配指定范围内的一个字符 | [a-z]ove |
[ ^ ] | 匹配不在指定组内的字符(除了,排除) | [^a-z0-9]ove |
\ | 用来转义元字符 | love\. |
\< | 词首定位符 | \<love |
\> | 词尾定位符 | love\> |
\(…\) | 匹配稍后使用的字符的标签 | %s#\(10.18.40\).100#\1.200# %s#\(192.168.\)10.1#\111.1# :18 s/\(.*\)/#\1/ 注释第18行 |
x\{y,z\} | 字符x 重复出现y到z次, | o\{1,5\} |
x\{y\} | 字符x 出现y次 | o\{5\} |
(…) : %s#(10.18.40).100#\1200
将.100换成.200,\1200:
\1为引用前面第一个括号的内容,替换成200。
\1,\2,\3 分别代表引用前面第1个,第2个,第3个括号的内容,最大支持9组。
四、扩展正则表达式元字符
元字符 | 功能 | 示例 |
+ | 匹配一个或多个前导字符(最少一次,多不上限) | egrep [a-z]+ove |
? | 匹配零个或一个前导字符(最多1次) | egrep r?oot |
a | b | 匹配a或b | egrep :80 | :22\> |
( ) | 组字符 | loveable|rs love(able|rs) |
(…)(…)\1\2 | 标签匹配字符 | (love)able\1er |
x{m,} | 字符x重复m次 | 0{5} |
x{m,n} | 字符x重复m次到n次 | 0{5,10} |
x{m} | 字符x重复至少m次 | 0{5,} |
- 0-9 ↩︎