字符匹配

. : 任意单个字符

[] : 指定范围内的任意单个字符

[^]: 指定范围外的任意单子字符

[:alnum:]:字母和数字

[:alpha:]:任意英文大小写字符 : A-Z a-z

[:lower:]:小写字母

[:upper:] :大写字母

[:blank:]:空白字符 空格和制表符

[:space:]:水平和垂直的空白字符

[:cntrl:]:不可打印的控制字符 退格 删除 警铃

[:digit:]: 十进制数字

[:xdigit:]:十六进制数字

[:graph:]:可打印的非空白字符

[:print:]:可打印字符

[:punct:]:标点符号

匹配次数

* : 任意次数包括0次

.* : 任意长度的任意字符

\? : 前一个字符0或1次

\+ : 前一个字符串至少1次

\{n\} : 前字符N次

\{m,n\}:前字符至少m次,最多n次

\{,n\} : 前字符最多n次

\{n,\} : 前字符最少n次

 

位置锚定

^:行首 grep -v "^#" /etc/fstab |grep -v "^$" (grep 排除 “井号开头” /etc/fstab |grep 排除 “空行”)

$:行尾

^$:空行

^[[:space:]]*$ : 空白行

 

词首词尾:

\<或 单词词首 例子:grep “\<root” /etc/passwd

\>或 单词词尾 例子:grep “root\>” /etc/passwd

\<root\> 匹配整个单词 等价于 -w

 

分组

\(\):括号优先级最高 例子:echo abcabcabc | grep \(wang\)\{3\} (abc出现3次)

\1:匹配括号 从左半括号到右半括号之间的字符(注意 不是规则)

| :或者 \(a\|b\)xy 匹配 a或者b 后面跟xy axy bxy 都可以匹配