grep 中星号 (*) 的含义

grep 中星号 (*) 的含义
[USERNAME@host ~] echo -e 'prdxxx\ndadxxx' | grep "da*xxx"
prdxxx
dadxxx
[USERNAME@host ~] echo $SHELL
/bin/bash
[USERNAME@host ~] dpkg -l | grep -iw bash
ii  bash                                    4.1-2ubuntu3                                    The GNU Bourne Again SHell
ii  bash-completion                         1:1.1-3ubuntu2                                  programmable completion for the bash shell
[USERNAME@host ~] 

为什么也da*xxx找到了prdxxx?它不包含da...我发现了 grep bug 吗?或者这是一个功能?

答案1

根据“*”的含义,它工作正常。

*-> 上一个字符出现 0 次或多次。

由于您正在检查 a*,因此这将匹配 0 个或多个 a。这意味着da*xxx 可以匹配 dxxx、daxxx、daaxxx、daaaxxx 等。

答案2

普通 shell 文件名模式之间存在差异(称为全局) 其中*匹配任意数量的未知字符,并且常用表达例如,使用grep,其中代表先前模式的零次或多次出现(这是示例中的*字符)。a

相关内容