$ grep 'tableName="' db.changelog.xml
<createTable tableName="MY_TABLE" schemaName="public">
$ grep 'tableName="[A-Z_]+"' db.changelog.xml
Run Code Online (Sandbox Code Playgroud)
第二个grep不返回任何内容。这是为什么?
这是默认配置的语言。
$ echo $LANG
en_US.UTF-8
$ grep --version
grep (GNU grep) 2.24
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Mike Haertel and others, see <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>.
Run Code Online (Sandbox Code Playgroud)
在基本正则表达式(BRE)模式下,+被解释为文字字符。
您有几种选择:
grep -E启用扩展正则表达式支持\{1,\}表示BRE模式下的一个或多个(符合POSIX,应在任何grep上均可使用)\+,GNU grep理解为BRE模式下的一个或多个