基本正则符号
^ 匹配行首
$ 匹配行尾
[ ] 集合,匹配集合中的任意字符
[^] 对集合取反
. 匹配任意单个字符
* 匹配前一个字符任意次数(不可单独使用)
\{n,m\} 匹配前一个字符n到m次
\{n\} 匹配前一个字符n次
\{n,\} 匹配前一个字符n次以上
\( \) 组合为整体,一般与上述匹配配合使用
#[ ]中可以使用0-9,a-z,a-Z表示连续的字符
#grep "*" user #错误用法,*号是匹配前一个字符任意次,不能单独使用 grep ".*" user #找任意,包括空行 .与*的组合在正则中相当于通配符的效果
#grep "\(0:\)\{2\}" user #找连续的2个0: 小括号的作用是将字符组合为一个整体 \的作用,转义符,使转义符后一个符号起作用
扩展正则符号
- 最少匹配一次 ? 最多匹配一次 {n,m} 匹配前一个字符n到m次 ( ) 组合为整体 | 或者 \b或\<或\> 单词边界(不允许出现数字、字母、下划线)
- \w 匹配数字、字母、下划线 \s 匹配空格、制表符 \d 匹配数字,和[0-9]等效(-P 才有效) \t 制表符
#扩展正则表达式
#基本正则命令均可以加-E或-P(尽量用P)选项并且去掉所有\,改成扩展正则的用法;-q 不输出,用于判断 比如grep "ro\{1,\}t" user可以改成 grep -E "ro{1,}t" user或者egrep "ro{1,}t" user
#egrep -q "\s+8\.[0-9]" /etc/redhat-release #判断系统版本
#egrep -q 无输出,可用作判断字段是否存在 [$? -eq 0] 存在0不存在1