在linux中,当我尝试一个单词的简单egrep它不匹配。以下不会返回任何结果,但我希望两个案例中的样本匹配:
echo "sample"|egrep "[\w]+"
echo "sample"|egrep "[\w]"
但是,以下内容会返回示例:
这个词echo "sample"|egrep "[\w]*"
sample
答案 0 :(得分:2)
使用 e xtended匹配,\w
之类的实体不会在方括号内展开。因此,避免它们:
echo sample | grep -E '\w+'
(egrep
是grep -E
的弃用别名。)
如果你真的想使用方括号,那么使用 p erl正则表达式:
echo sample | grep -P '[\w]+'
(注意,这是一个特定于GNU的非POSIX功能。)
最后,为了您的兴趣,[\w]*
-E
与grep
不匹配,但匹配零个或多个字符。并且假设每个字符串中至少包含零个字符,echo another.sample | grep --color=always -E '[\w]*'
echo another.sample | grep --color=always -E '\w+'
显示每一行。比较:
grep -Eo
您将看到第一个命令返回黑色字符串(表示它未与任何字符匹配)。第二个将突出显示另一个和示例,但不突出显示点,这意味着它已正确匹配这两个词。您可能还想尝试使用while (y != NULL && x == y->right)
^^^
。