基本正则
1 元字符
"." 匹配任意单个字符
"[ ]" 匹配指定范围内的任意单个字符
"[^]" 匹配指定范围外的任意单个字符
一些字符集合
"[:digit:]" 表示数字
"[:lower:]" 表示小写字母
"[:upper:]" 表示大写字母
"[:punct:]" 标点符号
"[:space:]" 空白
"[:alpha:]" 所有字母
"[:alnum:]" 所有数字和字母
"[:blank:]" 空格和制表符
2 匹配次数
"*" 匹配其前的字符任意次
".*" 匹配任意长度的任意字符
"\?" 匹配其前的字符0次或1次
"\{m,n\}" 匹配其前的字符至少m次,最多n次
"\{n\}" 匹配其前的字符n次
"\{n,\}" 匹配其前的字符至少n次
3 位置锚定
"^" 锚定行首,此符号之后的任意字符必须出现在行首
"$" 锚定行尾,此符号之前的任意字符必须出现在行尾
^$ 表示空白行
"\<或\b" 表示其后的任意字符必须作为单词的首部出现
"\>或\b" 表示其前的任意字符必须作为单词的尾部出现
4 分组
"\(\)"
案例 过滤得到包含oo整体的行并在第一个匹配到的oo后面加888数字
sed -n 's/\(oo\)/\1888/p' /etc/passwd
roo888t:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spoo888l/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spoo888l/mail:/sbin/nologin
operator:x:11:0:operator:/roo888t:/sbin/nologin
setroubleshoo888t:x:994:991::/var/lib/setroubleshoot:/sbin/nologin
postfix:x:89:89::/var/spoo888l/postfix:/sbin/nologin
扩展正则
1 次数匹配
"*" 匹配其前的字符任意次
"?" 匹配其前的字符0次或1次
"+" 匹配其前的字符至少一次
"{m,n}" 匹配其前的字符至少m次,最多n次
"{n}" 匹配其前的字符n次
"{n,}" 匹配其前的字符至少n次
2 分组
"()"
3 或者
"a|b"
案例
(C|c)at 表示匹配Cat或者cat
perl内置正则
"\d" 表示数字
"\w" 匹配一个字母、数字或下划线字符,相当于[a-zA-Z_0-9]
"\s" 匹配一个空字符
"\b" 匹配单词的首尾
通过grep -P来使用
案例 过滤/etc/passwd中的所有数字
[root@lz1 ~]# grep -P "\d" /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
... ...
网友评论