字符匹配
. : 任意单个字符
[] : 指定范围内的任意单个字符
[^]: 指定范围外的任意单子字符
[: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 都可以匹配