`grep fil*`이 실패하는 이유는 무엇입니까?

`grep fil*`이 실패하는 이유는 무엇입니까?

나는 echo file|grep fil*실패를 발견했지만 echo abcd|grep abc*성공했습니다.

이해가 안가는데 누가 설명해주실 수 있나요?

답변1

귀하의 예에는 두 가지 문제가 있습니다.

첫 번째는 당신의 가정입니다일반적인 표현작업 방법글로벌 모드여기에는 *"모든 문자 시퀀스"를 의미하는 와일드카드가 있습니다. 정규식에서는 *"이전 원자의 수"를 의미하므로 뒤에 0개 이상의 문자가 fil*오는 것을 의미합니다 . 의도된 의미를 얻으려면 다음과 같이 말해야 합니다 . "모든 단일 문자, 즉 "모든 문자 시퀀스"를 의미합니다.filgrep fil.*..*

더 작은 문제는 따옴표 없이 사용하는 특수 문자가 전역 규칙에 따른 의미를 의미하므로 쉘이 이를 해석할 수 있다는 것입니다. 로컬 디렉터리 fil*또는 에 glob 패턴과 일치하는 파일이 있는 abc*경우쉘이 이를 확장합니다., grep예상되는 RE 대신 확장된 파일 이름을 패턴으로 사용합니다. 명령줄에서 이러한 문자를 사용할 때마다 따옴표로 묶어야 합니다 echo file | grep 'fil.*'.

관련 정보