无法将字符组与grep匹配

时间:2019-05-13 09:14:55

标签: regex grep

我想匹配正则表达式\[[A-Z\s]*\]。似乎grep无法将[A-Z\s]解释为any upper-case letter or space\[.*\]有效,但对我来说不够具体。

快速浏览grep --help可以发现正则表达式有多个选项。

  -E, --extended-regexp     PATTERN is an extended regular expression (ERE)
  -F, --fixed-strings       PATTERN is a set of newline-separated strings
  -G, --basic-regexp        PATTERN is a basic regular expression (BRE)
  -P, --perl-regexp         PATTERN is a Perl regular expression
  -e, --regexp=PATTERN      use PATTERN for matching

我似乎没有使它与任何这些选项一起使用。我究竟做错了什么?

背景:我想介绍一下日志信息。记录器有时会输出[INFO][WARN ]或类似信息。

1 个答案:

答案 0 :(得分:1)

Perl兼容的正则表达式...

grep -P "\[[A-Z\s]*\]"

...为我工作。输入:

[INFO]
[WARN ]
[TEST2]

输出:

[INFO]
[WARN ]

如果您的系统上没有PCRE,则

grep "\[[A-Z[:space:]]*\]"

将无法使用grep的内置基本语法。