一.【匹配字符】
. 匹配任意单个字符
[ ] 匹配指定范围内的任意字符
[^] 匹配非指定范围内的任意字符eg: grep '^[^0-9]' file 过滤出非数字开头的行
[:alpha:] 字母字符
[:lower:] 小写字母字符
[:upper:] 大写字母字符
[:digit:] 数字
[:alnum:] 字母数字字符
[:space:] 空白字符(禁止打印),如回车符、换行符、竖直制表符和换页符
[:punct:] 标点字符
[:cntrl:] 控制字符(禁止打印)
[:print:] 可打印字符使用时一般使用两个中括号,具体会在下面的例子中使用。
二.【匹配次数】
* 匹配前面的字符任一次
.* 匹配任意长度的任意字符(注意贪婪模式,比如 grep “r.*t” /etc/passwd )
x\{m,n\} 指定前面的字符至少出现m次,至多出现N次。
x\{m,\} 指定前面的字符至少出现m次
x\{0,n\} 指定前面的字符至多出现N次
x\{m\} 精确匹配m次? 匹配其前面的字符0或1次
三.【锚定符】
1.^ 锚定行首 grep "^r..t" /etc/passwd
2.$ 锚定行尾 grep "h$" /etc/passwd
3.^$ 锚定空白行 grep "^$" /etc/passwd
4..\(\)对字符分组 grep "\(l..e\).*\1r"
示例:
grep --color "l\([13]\):\1:.*:\1" /etc/initta
四.【选项】
-v 对结果取反
-i 忽略字母大小写
-o 仅显示匹配到的字符串(行的其他内容不显示)
-E 支持扩展的正则表达式(egrep)
1) | 或者
2) + 次数匹配,匹配其前的额字符一次或者多次
3) '(oo)'匹配两个oo为一组
4)? 表示0个或1个前面的字符
-A n 显示匹配到的行下面n行
-B n 显示匹配到的行上面n行
-C n 显示匹配到的行上下面各显示n行
-r 遍历文件