'|' 表示或,匹配其前或者其后的单词,注意并不是匹配字符,如需匹配字符,需要使用分组进行限定。我这里使用的是扩展正则,如需使用基本正则,需要将 '|' 换为 "\|"。
3.扩展正则表达式
grep 同时还支持扩展正则表达式,在使用扩展正则表达式是,需要使用 -E 选项。基础正则表达式和扩展正则表达式中的一些区别:
基础正则中使用 \?,扩展正则中使用 ?
基础正则中使用 \(\),扩展正则中使用 ()
基础正则中使用 \{\},扩展正则中使用 {}
在基础正则表达式中匹配 ?,(),{} ,不需要进行转移,而在扩展正则表达式中则需要加上转义符号 \。
扩展正则表达式中的其他选项:
\s:匹配空白字符
\S:匹配非空白字符
\w:匹配字母,数字,相当于 [0-9a-zA-Z]
\W:不匹配字母和数字,相当于 [^0-9a-zA-Z]
4.grep 的其他选项grep PATTERN FILE -A NUM:使用 grep 进行匹配之后,显示匹配的行,同时向后显示指定的行
grep PATTERN FILE -B NUM:和上面相反,向后显示指定行
grep PATTERN FILE -C NUM:进行匹配之后,分别向前和向后显示指定的行,相当于 -AB NUM
grep PATTERN FILE -c:显示被匹配到的行数
grep PATTERN FILE -F:相当于 fgrep
grep PATTERN FILE -P:使用 Perl 风格的正则表达式
\d:匹配任意十进制数字,相当于 [0-9]
\D:匹配任意非数字字符,相当于 [^0-9]
5.egrep 和 fgrep在使用 grep 时,如果想要开启扩展正则表达式,需要指定 -E 选项,而 egrep 命令则是默认支持扩展正则表达式。因此在需要使用扩展正则表达式时推荐使用 egrep 代替 grep -E。
fgrep 表示快速匹配,不支持正则表达式,没有转义的概念,会对 PATTERN 中的所有字符进行匹配。
6.总结本篇我们介绍了 grep 命令和正则表达式的基本使用,grep 是 Linux 下的一个文本处理命令,配合正则表达式使用,其功能非常强大。grep 主要用来查找操作,如果想使用替换等更加强大的功能,就需要使用 sed 或者 awk 命令。grep,sed,awk 被称为 Linux 下的三个文本处理杀器,等学到相应的章节再继续介绍 :)