grep regex 구문에서 "+"가 작동하지 않습니다.

grep regex 구문에서 "+"가 작동하지 않습니다.

저는 우분투 16.04를 사용하고 있습니다

견딜 수 없는: grep '.*' file1

산출: file nu-mber o-ne second string

견딜 수 없는:grep '.+' file1

출력이 없습니다

플러스가 작동하지 않는 이유는 무엇입니까?

답변1

당신은 말해야grep확장 정규식을 사용하고 있습니다.

grep -E '.+' file1

표준기본 정규 표현식grep( 없이 사용됨 -E)확장 정규식 +연산자는 \{1,\}일부 구현(예: GNU)에서도 \+이를 확장으로 인식하지만 항상 를 사용할 수 있습니다 ..*.

(이 특별한 경우는 옵션 을 사용하지 않을 때 정규식과 일치하는 하위 문자열을 찾는 것과 grep -E .+동일합니다 . 많은 시스템에서 는 와 동등한 명령으로 제공되지만 다음과 같습니다.grep -E .-xegrepgrep -E그레이엄 지적이것은쓸모없는.)

답변2

GNU grep(Ubuntu의 기본값)을 사용하면 백슬래시를 사용하여 확장 동작을 활성화할 수도 있습니다. 예:

grep '.\+' file1

답변3

나는 +가 확장된 정규식 메타문자라고 생각합니다. 을 사용해 보세요 egrep.

관련 정보