SHELL正则表达式

山水沐光 2020-08-03

简介
正则表达式其主要作用是通过一些拥有特殊含义得字符
完成日常工作中我们需要得特定字符串匹配,或者从输出内容中匹配出符合我们需要得内容。

分类

  • 基础正则表达式
  • 扩展正则表达式

基础正则表达式

正则表达式简述是否支持
\转义字符支持
^以指定字符开头支持
$以指定字符结尾支持
\>词尾锚定支持
.任意单个字符支持
*匹配前面的字符0任意次支持
[]匹配[]中的任意一个字符支持
[-]范围匹配支持
?匹配前面字符0次或一次不支持
+匹配 前面的字符一次或多次不支持
()匹配字符串不支持
{n}匹配前面的单词或字符串n次不支持
{m,}匹配前面的单词或字符串最少m次不支持
{,n}匹配前面的单词或字符串最多m次不支持
{m,n}匹配前面的单词或字符串最少n次最多m次不支持
I匹配号两边任意一项不支持
注意:如上基础扩展正则表达式中不支持的表达式,除Command本身就可以通过特定参数
开启扩展支持的选项外,还可以通过转义字符完成支持,请参考如下几个实例

案例演示:

1丶即可通过转义符完成本不支持基础的正则予以支持
grep ‘ro{2,}‘ /etc/passwd
SHELL正则表达式
2丶grep&sed默认开启扩展的选项演示如下
egrep ‘ro{2,}‘ /etc/passwd
grep -E ‘ro{2,}‘ /etc/passwd
sed -r -n ‘/ro{2,}/‘p /etc/passwd
SHELL正则表达式

扩展正则表达式

正则表达式简述是否支持
\转义字符支持
^以指定字符开头支持
$以指定字符结尾支持
\>词尾锚定支持
.任意单个字符支持
*匹配前面的字符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
SHELL正则表达式
2丶匹配任意字母或者数字(字母不区分大小写)
[ ~]# echo "I m Love ZhongGuo 555 ; , ::"|grep ‘[[:alnum:]]‘
[ ~]# grep ‘[[:alnum:]]‘ /etc/fstab
SHELL正则表达式
3丶只匹配小写字母
[ ~]# touch {a..z}
[ ~]# touch {A..Z}
[ ~]# touch {1..26}
[ ~]# ls [[:lower:]]
SHELL正则表达式
4丶只匹配大小字母
[ tmp]# ls [[:upper:]]
SHELL正则表达式
5丶只匹配数字
[ tmp]# ls [[:digit:]]
[ tmp]# ls [[:digit:]][0-9]
SHELL正则表达式
6丶匹配空格
[ tmp]# touch \ a
[ tmp]# touch \ \ a
[ tmp]# touch \ \ \ a
[ tmp]# ls|grep ‘[[:space:]]‘
SHELL正则表达式

相关推荐