Shell 正则匹配符和限定符

匹配符

.	匹配除回车以外的任意字符 a.c  abc abbbbc
() 字符串分组 (a|b) a或b
[] 定义字符类,匹配括号中的一个字符 [0-9] [a-z] 等
[^] 表示否定括号中出现字符类中的字符,取反。[^0-9] 是数字
\ 转义字符

限定符

*	某个字符之后加星号表示该字符不出现或出现多次
? 表示该字符出现一次或不出现 最多1次
+ 表示其前面字符出现一次或多次,但必须出现-次
{m} 正好出现了m次
{n,m} 某个字符之后出现,表示该字符最少n次,最多m次

常用规则

.*	表示任何内容,是任意次的任意字符
x* 表示 * 左边的字符 x 重复0次或多次
x+ 表示 + 左边的字符 x 重复1次或多次
x? 表示 ?左边的字符x重复0次或者1次
x{n} 表示字符x重复n次,{}是正则 ,grep需要进行脱义 \{\}

sed、grep提取和替换字符串

以下是在 MacOS 系统下的运行结果

示例1

echo Slowisfast123 | grep -E '\d+' -o

输出:

123

示例2

echo Slowisfast123 | sed 's/.*fast\([0-9]\)/\1/g'

s表示替换,\1表示用第一个括号里面的内容替换整个字符串,sed支持*,不支持?、+,不能用\d之类,正则支持有限

输出:

123