SHELL正则表达式
简介
正则表达式其主要作用是通过一些拥有特殊含义得字符 完成日常工作中我们需要得特定字符串匹配,或者从输出内容中匹配出符合我们需要得内容。
分类
- 基础正则表达式
- 扩展正则表达式
基础正则表达式
正则表达式 | 简述 | 是否支持 |
---|---|---|
\ | 转义字符 | 支持 |
^ | 以指定字符开头 | 支持 |
$ | 以指定字符结尾 | 支持 |
\> | 词尾锚定 | 支持 |
. | 任意单个字符 | 支持 |
* | 匹配前面的字符0任意次 | 支持 |
[] | 匹配[]中的任意一个字符 | 支持 |
[-] | 范围匹配 | 支持 |
? | 匹配前面字符0次或一次 | 不支持 |
+ | 匹配 前面的字符一次或多次 | 不支持 |
() | 匹配字符串 | 不支持 |
{n} | 匹配前面的单词或字符串n次 | 不支持 |
{m,} | 匹配前面的单词或字符串最少m次 | 不支持 |
{,n} | 匹配前面的单词或字符串最多m次 | 不支持 |
{m,n} | 匹配前面的单词或字符串最少n次最多m次 | 不支持 |
I | 匹配号两边任意一项 | 不支持 |
注意:如上基础扩展正则表达式中不支持的表达式,除Command本身就可以通过特定参数 开启扩展支持的选项外,还可以通过转义字符完成支持,请参考如下几个实例
案例演示:
1丶即可通过转义符完成本不支持基础的正则予以支持
grep ‘ro{2,}‘ /etc/passwd
2丶grep&sed默认开启扩展的选项演示如下
egrep ‘ro{2,}‘ /etc/passwd
grep -E ‘ro{2,}‘ /etc/passwd
sed -r -n ‘/ro{2,}/‘p /etc/passwd
扩展正则表达式
正则表达式 | 简述 | 是否支持 |
---|---|---|
\ | 转义字符 | 支持 |
^ | 以指定字符开头 | 支持 |
$ | 以指定字符结尾 | 支持 |
\> | 词尾锚定 | 支持 |
. | 任意单个字符 | 支持 |
* | 匹配前面的字符0任意次 | 支持 |
[] | 匹配[]中的任意一个字符 | 支持 |
[-] | 范围匹配 | 支持 |
? | 匹配前面字符0次或一次 | 支持 |
+ | 匹配 前面的字符一次或多次 | 支持 |
() | 匹配字符串 | 支持 |
{n} | 匹配前面的单词或字符串n次 | 支持 |
{m,} | 匹配前面的单词或字符串最少m次 | 支持 |
{,n} | 匹配前面的单词或字符串最多m次 | 支持 |
{m,n} | 匹配前面的单词或字符串最少n次最多m次 | 支持 |
I | 匹配号两边任意一项 | 支持 |
常用的POSIX字符类
正则表达式 | 简述 |
---|---|
[:upper:] | 匹配大写字母 |
[:lower:] | 匹配小写字母 |
[:space:] | 匹配空格字符 |
[:alpha:] | 匹配任意字母包含大小写 |
[:digit:] | 匹配任意一个数字 |
[:punct:] | 匹配标点符号 |
[:alnum:] | 匹配字母或者数字 |
案例演示
1丶匹配标点符号
[ ~]# grep ‘[[:punct:]]‘ /etc/fstab
2丶匹配任意字母或者数字(字母不区分大小写)
[ ~]# echo "I m Love ZhongGuo 555 ; , ::"|grep ‘[[:alnum:]]‘
[ ~]# grep ‘[[:alnum:]]‘ /etc/fstab
3丶只匹配小写字母
[ ~]# touch {a..z}
[ ~]# touch {A..Z}
[ ~]# touch {1..26}
[ ~]# ls [[:lower:]]
4丶只匹配大小字母
[ tmp]# ls [[:upper:]]
5丶只匹配数字
[ tmp]# ls [[:digit:]]
[ tmp]# ls [[:digit:]][0-9]
6丶匹配空格
[ tmp]# touch \ a
[ tmp]# touch \ \ a
[ tmp]# touch \ \ \ a
[ tmp]# ls|grep ‘[[:space:]]‘
相关推荐
MaggieRose 2020-08-19
wangzhaotongalex 2020-10-20
rechanel 2020-11-16
wyq 2020-11-11
TLROJE 2020-10-26
风雨断肠人 2020-10-13
duanqingfeng 2020-09-29
cshanzhizi 2020-10-16
luofuIT成长记录 2020-09-22
phphub 2020-09-10
taomengxing 2020-09-07
flyingssky 2020-08-18
山水沐光 2020-08-18
jyj00 2020-08-15
AHuqihua 2020-08-09
jyj00 2020-07-19