xml*_*lmx 3 grep regular-expression
[root@localhost opt]# cat cfg
key = value
[root@localhost opt]# grep 'key\s*=\s*.+' cfg
[root@localhost opt]#
Run Code Online (Sandbox Code Playgroud)
我的意图是:=
符号后面可以跟零个或多个空格,但后面必须跟一个或多个非空格字符。
为什么不输出行key = value
?
Joh*_*024 10
观察:
$ grep 'key\s*=\s*.+' cfg
$ grep 'key\s*=\s*.\+' cfg
key = value
$ grep -E 'key\s*=\s*.+' cfg
key = value
Run Code Online (Sandbox Code Playgroud)
在基本正则表达式(BRE,默认值)中,+
表示加号。作为 GNU 扩展,可以使用\+
. 这也是真实的?
,{
,|
,和(
。除非用反斜杠转义,否则这些在 BRE 下都被视为普通字符。
如果您使用扩展正则表达式,则规则会发生变化-E
。对于 ERE,不需要反斜杠,普通+
表示一个或多个前一个字符。在 ERE 下,\+
表示一个普通的正常加号。