为什么grep
macOS上的 BSD在这里只产生第一个词:
$ echo "once upon a time" | grep -o "[a-z]*"
once
Run Code Online (Sandbox Code Playgroud)
但这里所有的话:
$ echo "once upon a time" | grep -o "[a-z][a-z]*"
once
upon
a
time
Run Code Online (Sandbox Code Playgroud)
或者,使用扩展的正则表达式:
$ echo "once upon a time" | grep -E -o "[a-z]*"
once
$ echo "once upon a time" | grep -E -o "[a-z]+"
once
upon
a
time
Run Code Online (Sandbox Code Playgroud)
GNUgrep
将为[a-z]+
(or [a-z][a-z]*
) 和生成相同的输出[a-z]*
:
$ echo "once upon a time" | ggrep -E -o "[a-z]*"
once …
Run Code Online (Sandbox Code Playgroud)