基本正则符号

^ 匹配行首

$ 匹配行尾

[ ] 集合,匹配集合中的任意字符

[^] 对集合取反

. 匹配任意单个字符

* 匹配前一个字符任意次数(不可单独使用)

\{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