grep无法识别[AZ] +

wou*_*non 0 regex grep

$ 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)

Tom*_*ech 5

在基本正则表达式(BRE)模式下,+被解释为文字字符。

您有几种选择:

  • 用于grep -E启用扩展正则表达式支持
  • 用于\{1,\}表示BRE模式下的一个或多个(符合POSIX,应在任何grep上均可使用)
  • use \+,GNU grep理解为BRE模式下的一个或多个