我想匹配正则表达式\[[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 ]
或类似信息。
答案 0 :(得分:1)
Perl兼容的正则表达式...
grep -P "\[[A-Z\s]*\]"
...为我工作。输入:
[INFO]
[WARN ]
[TEST2]
输出:
[INFO]
[WARN ]
如果您的系统上没有PCRE,则
grep "\[[A-Z[:space:]]*\]"
将无法使用grep的内置基本语法。