grep中星号(*)的含义

gas*_*ter 1 grep regular-expression

[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 ~] 
Run Code Online (Sandbox Code Playgroud)

为什么也da*xxxprdxxx?它不包含da......我发现了一个grep错误吗?或者这是一个功能?

Gur*_*uru 10

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

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

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

  • 因为它包含 dxxx。在此之前或之后是什么并不重要。 (7认同)