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 버그를 찾았나요? 아니면 이게 특징인가요?

답변1

"*"의 의미에 따르면 정상적으로 작동합니다.

*-> 이전 문자가 0번 이상 나타납니다.

a*를 확인하고 있으므로 0개 이상의 a와 일치합니다. 이는 da*xxx dxxx, daxxx, daaxxx, daaaxxx 등과 일치할 수 있음 을 의미합니다.

답변2

일반적인 쉘 파일 이름 패턴('이라고 함) 사이에는 차이점이 있습니다.전반적인 상황) *알 수 없는 문자 수와 일치하며일반적인 표현예를 들어, grepwhere는 이전 패턴( *예제의 문자)이 0개 이상 나타나는 것을 나타냅니다.a

관련 정보