以网络配置文件为例,简单介绍基础用法:
标识 | 说明 | 举例 |
^ | :表示锚定行首,此字符后面的任意内容必须出现在行首,才能匹配。 | grep ^IP /etc/sysconfig/network-scripts/ifcfg-ens32 匹配以“IP”开头的行 |
$ | 表示锚定行尾,此字符前面的任意内容必须出现在行尾,才能匹配 | grep IP$ /etc/sysconfig/network-scripts/ifcfg-ens32 匹配以“IP”结尾的行 |
^$ | 表示匹配空行,这里所描述的空行表示”回车”,而”空格”或”tab”等都不能算作此处所描述的空行 | |
^abc$ | 表示abc独占一行时,会被匹配到 | grep ^NAME=\"ens32\"$ /etc/sysconfig/network-scripts/ifcfg-ens32 注意:引号要用 \" 转义 |
\<或者\b | 匹配单词边界,表示锚定词首,其后面的字符必须作为单词首部出现 | grep "\<NAME" /etc/sysconfig/network-scripts/ifcfg-ens32 |
\>或者\b | 匹配单词边界,表示锚定词尾,其前面的字符必须作为单词尾部出现 | grep "no\>" /etc/sysconfig/network-scripts/ifcfg-ens32 -n 结果如下: 将”\<“与”\>”结合在一起使用,只有当XXX是一个独立单词时候才会匹配到。 |
\B | 匹配非单词边界,与\b正好相反 | grep "no\B" /etc/sysconfig/network-scripts/ifcfg-ens32 -n 结果如下: |
“\b”是用来锚定词首、锚定词尾的,换句话说,”\b”是用来匹配”单词边界”的,而”\B”则正好相反, “\B”是用来匹配”非单词边界”的。
”\Bhello”表示,只要hello不是词首,就会被匹配到, 而”\bhello”表示,只要hello是词首,就会被匹配到,所以,”\B”与”\b”所要表达的意思正好相反。