这是我正在使用的文件的文本:
(4 spaces)Hi, everyone
(1 tab)yes
Run Code Online (Sandbox Code Playgroud)
当我运行此命令时 - grep '^[[:space:]]+' myfile
它不会向stdout打印任何内容.
为什么它不匹配文件中的空格?
我正在使用GNU grep版本2.9.
有几种不同的正则表达式语法.grep的默认值在grep文档中称为基本语法.
来自man grep(1):
In basic regular expressions the meta-characters
?, +, {, |, (, and ) lose their special meaning; instead
use the backslashed versions \?, \+, \{, \|, \(, and \).
Run Code Online (Sandbox Code Playgroud)
因此,而不是+
你应该键入\+
:
grep '^[[:space:]]\+' FILE
Run Code Online (Sandbox Code Playgroud)
如果您需要来自正则表达式的更多功能,我还建议您查看Perl正则表达式语法.它们通常被认为是最具表现力的.有一个名为PCRE的C库可以模拟它们,并且grep链接到它.要使用它们(而不是基本语法),您可以使用grep -P.