나는 grep
atm을 배우고 있지만 나는 클라인 스타 메타 문자의 작동을 이해하는 데 어려움을 겪고있다. 설명서 페이지는 *
이 이전 문자와 0 번 이상 일치한다고 설명합니다. 나는 a
의 0 개 이상의 발생과 일치해야합니다 다음과 같은 내용grep : 클론 스타 (*)는 언제 그 자체와 일치해야합니까?
*a
123ab
1234
abcdef
a?
?
grep 'a*' test
와라는 이름의 파일 test
를 사용하고 등은 인쇄 출력의 test
파일의 모든 라인을 설명했다. *
과 같은 메타 문자와 일치 시키려면 백 슬래시 \
앞에 붙여서 이스케이프 처리해야한다고 설명합니다. 그러나 grep '*' test
과 grep '\*' test
의 출력은 같습니다. 출력 : *a
왜 *
앞에 붙지 않고 \
과 일치합니까?
'* a '는 유효한 grep 패턴이 아닙니다 (유효하지 않은 정규 표현식이므로). grep은 아마도 "정의되지 않은 동작"을 어떻게 처리 할 것인가? 그리고 구현은 그들이 원하는 것을 할 수있다. (축 어적으로는 초기'* '를 처리하는 것) –
그러나 grep은 \ test를 완벽하게 일치시킨다. . –
'\ * a'는 유효한 정규 표현식이므로 –