shell正则表达式的基本正则表达式和扩展正则表达式的区别

shell中的正则表达式有基本的正则表达式扩展的正则表达式,这个需要理解清楚,因为不同的命令支持的正则表达式是不同的。常用的只有egrepawk支持扩展正则表达式,而 gerpvised支持基本的正则表达式

基本的正则表达式

表达式 含义
c 普通的字母,匹配自己
. 匹配任意单个字符
* 匹配一个字符0次或者多次
.* 任意多个字符
[abc] 匹配中括号中的任意一个字符
[0-9a-zA-Z] 匹配连续的字符,示例中匹配素所有的数字和字母
^ 字符串开始
$ 字符串结束
[^abc] 不匹配abc中的任何一个
\ 匹配转义后的字符
\{n,m\} 匹配前一个字符出现n到m次
\{n,\} 至少重复n次
\{n\} 重复n次
\(\) 存储在保留空间中,最多9个
\n 通过\1 ~ \9 获得保留空间的内容

扩展的正则表达式

表达式 含义
{n,m} 和 {n,m}相同
+ 匹配前一个一次或者多次
? 匹配前一个一次或者零次
| 逻辑或,匹配前者后者后者
() 匹配正则集合

POSIX 规范

字符集 含义
[:alpha:] 字母字符
[:alnum:] 字母数字
[:cntrl:] 控制字符
[:digit:] 数字字符
[:xdigit:] 十六进制数字字符
[:punct:] 标点符号
[:graph:] 非空格字符
[:print:] 可以显示的字符
[:space:] 任何产生空白的字符
[:blank:] 空格和Tab
[:lower:] 小写字母
[:upper:] 大写字母
grep --color [[:digit:]] /etc/passwd

GUN规范

有两个 \b 单词的边界, \B不是单词的边界

grep --color "the\b" /etc/passwd
grep --color "ack\B" /etc/passwd

发表评论

邮箱地址不会被公开。