grep에서 탐욕스럽지 않은 정규식을 사용하는 방법은 무엇입니까?

grep에서 탐욕스럽지 않은 정규식을 사용하는 방법은 무엇입니까?

이것페이지에는 정규식의 승수 뒤에 '?'가 접미사로 붙을 수 있다고 나와 있습니다. 탐욕스럽지 않은 검색을 수행합니다. 그러나 grep에서 작동시키는 방법을 알 수 없습니다.

grep -E '^.*?$' file

전체 텍스트를 인쇄합니다.

grep을 사용하여 탐욕스럽지 않은 정규식 검색을 어떻게 수행할 수 있습니까?

답변1

grepPCRE(Perl Compatible Regular Expression) 지원이 필요합니다 . 예를 들어 GNU grep에는 이것이 있습니다. 옵션으로 활용할 수 있습니다 -P. pcregrep일반 패키징을 사용하여 많은 시스템에 설치할 수 있는 독립 실행형 프로그램도 있습니다 .

-E토큰 과 비탐욕적 일치 지원이 없는 ERE(확장 정규 표현식)를 활성화 합니다 ?.

따라서 GNU를 사용하면 grep다음과 같은 작업을 수행할 수 있습니다.

grep -Po '^.*?foo' file

처음부터 처음까지 일치(및 추출)합니다 foo.

관련 정보