在正则表达式grep-1中介绍了常用的option选项,在grep-2中总结下pattern的不同情形。与grep-1中一样,匹配的都由红色显示。
1. [ ]
[ ]是一字符列表表达式,用以匹配[ ]里包含的任一字符,例如[abc],表示匹配字母a或b或c。在默认的 C 语言环境下(不是c编程语言,而是 c locale,由LC_ALL设定,可由locale命令查看LC_ALL项) 在默认C的情况下,[abc]等价为[a-c],但在其他的环境下[a-c]代表的是字典序,也就是[aBbc],除了字母,当然还有数字[0-9]等。
除了这种显示的书写外,[ ]表达式还包含一些定义好的字符类,这些字符类都是可以被[ ]表达式解释的,如下。
[:alpha:]:表示任一字母。
[:digit:]:表示任一数字。
[:alnum:] :表示任一字母或数字,可以由 \w简指。注意由于w前的“\”为特殊字符,所以要用 \ 转义。
\W 表示 [^[:alnum]],其中的^表示相反的意思。如下可见字符和数字都不匹配。
[:lower:] :表示小写字母
[:upper:] :表示大写字母
[:space:] :表示空白,包括tap,空格,空行。
注意:由于这里存在 “-” 符号,如[a-z]是表示从a到z,所以为避免混淆,习惯上将''-‘' 写在最后,如,想表达a,-,z中的某个,[az-]这样写不存在歧义。
^ 有表示行首的意思,所以习惯上不将其写在最前边,除非目的就是表达行首。
2、 $与^
$在grep中代表行尾,^ 代表“取相反的意思”,也表示行首。
查找以bash结尾的。
查找以daemon开始的。
查找不以数字开始的: 红色的代表行首,蓝色的代表不是数字。
3.()
将()里面的东西视为一体。
4、其他
. :点代表任意的一个字符。
*:代表其前面的重复0到多次,即可以不出现,也可以连续出现。
不出现.
重复出现
?:代表前面的或不出现,或出现,但只能出现一次。
在grep2中写入如下内容:
可见gooood并没有出现。
+:代表至少出现一次。
{n}:恰好出现n次。
{n,}:出现次数至少是n次。
{n,m}:出现至少n次,最多m次。注意蓝色横线和黑色竖线俩个例子的区别。
说明:后面的例子用扩张grep时,即grep 带 -E参数,对特殊字符,如{} 就没用\来转义,但一般的grep(不带-E),对特殊字符需要转义"\"