grep -e와 grep -E 옵션의 차이점은 무엇입니까? -e하고 grep

나는 차이를 이해하려고 grep -e하고 grep -E. 이제 grep manpage내가 얻은 것 :

-E, –extended-regexp

PATTERN을 확장 정규식으로 해석하십시오 (아래 참조).

-e 패턴, –regexp = 패턴

패턴으로 PATTERN을 사용하십시오. -로 시작하는 패턴을 보호하는 데 유용

위의 설명은 나에게 이해가되지 않습니다.

그래서 누군가 examples가 두 옵션의 차이점과 사용 옵션의 차이점을 사용하여 설명 할 수 있습니까 ?

PS : 버전 : grep (GNU grep) 2.10



답변

-e일치시키려는 패턴을 나타내는 플래그입니다. -E특정 특수 문자를 이스케이프해야하는지 여부를 제어합니다.

man grep-E조금 더 설명 합니다.

   Basic vs Extended Regular Expressions
   In basic regular expressions the meta-characters ?, +, {, |, (, and ) lose their special meaning; instead use the backslashed versions \?, \+, \{, \|, \(, and \).

   Traditional  egrep  did  not  support  the  {  meta-character, and some egrep implementations support \{ instead, so portable scripts should avoid { in grep -E patterns and should use [{] to match a
   literal {.

   GNU grep -E attempts to support traditional usage by assuming that { is not special if it would be the start of an invalid interval specification.  For example, the command grep -E '{1' searches for
   the two-character string {1 instead of reporting a syntax error in the regular expression.  POSIX.2 allows this behavior as an extension, but portable scripts should avoid it.


답변

또한 grep -e: 검색을위한 몇 가지 문자열을 사용할 수 있도록 'grep -e 'abc' -e 'def' -e '123'이 문자열의 세를 찾습니다 : abc뿐만 아니라 def123.

이것은 의미 하는 grep 'abc\|def\|123'곳 과 매우 유사 하지만 읽기가 더 명확 할 수 있습니다.\|or

가장 중요한 사실 grep -E이 이미 여기에 설명되어 있으므로이 주제에 대해 요약 한 내용을 비슷한 질문에 추가하고 싶습니다 .Bash에서 이중 문자를 찾기위한 정규 표현식


답변

아래 참조

/펼친

grep은 “기본”, “확장”및 “perl”이라는 세 가지 정규식 구문 버전을 이해합니다. GNU grep에서는 기본 구문과 확장 구문간에 사용 가능한 기능에 차이가 없습니다. 다른 구현에서는 기본 정규 표현식의 성능이 떨어집니다. 다음 설명은 확장 정규식에 적용됩니다. 기본적인 정규 표현식의 차이점은 나중에 요약됩니다. Perl 정규 표현식은 추가 기능을 제공하며 pcresyntax (3) 및 pcrepattern (3)에 문서화되어 있지만 모든 시스템에서 사용 가능한 것은 아닙니다.

다시 한 번.

GNU grep에서는 기본 구문과 확장 구문간에 사용 가능한 기능에 차이가 없습니다


답변

-e옵션 에 대해 자세히 설명합니다 . -e종종 선택 사항입니다.

grep PATTERN

~와 동일하다

grep -e PATTERN

이전 답변과 매뉴얼 페이지에 명시된 바와 같이 여러 검색 패턴이 있거나 하이픈 (-)으로 시작하는 패턴을 보호하지 않는 한.


답변