grep 정규식 구문에 '+'를 사용할 수 없습니다.

grep 정규식 구문에 '+'를 사용할 수 없습니다.

우분투 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.

관련 정보