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

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

grep -e의 차이점을 이해하려고 노력하고 있습니다 grep -E. 이제 grep manpage나는 다음을 얻습니다:

-E, --확장 정규식

PATTERN을 확장 정규식으로 해석합니다(아래 참조).

-e 모드, --regexp=모드

-로 시작하는 패턴을 보호하는 데 유용한 패턴으로 PATTERN을 사용합니다.

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

그렇다면 누군가 나에게 examples둘 사이의 차이점과 언제 어떤 옵션을 사용해야 하는지 설명해 줄 수 있습니까?

추신: 버전: grep(GNU grep) 2.10

답변1

-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.

답변2

grep -e여러 문자열을 사용하여 검색하는 것도 허용 됩니다. 'grep -e 'abc' -e 'def' -e '123'세 문자열 중 하나가 검색됩니다: abcdef123.

grep 'abc\|def\|123'\|where presents 와 매우 유사하게 작동 or하지만 읽기가 조금 더 명확할 수 있습니다.

가장 중요한 사실은 이미 여기에 설명되어 있으므로 grep -E매우 유사한 질문에서 이 주제에 대한 요약을 추가하고 싶습니다.Bash에서 이중 문자를 찾는 정규식

답변3

-e이 옵션 에 대해 자세히 설명하겠습니다 . -e일반적으로 선택사항:

grep PATTERN

그리고

grep -e PATTERN

이전 답변 및 매뉴얼 페이지에서 언급한 것처럼 여러 검색 패턴이 있거나 하이픈(-)으로 시작하는 패턴이 보호되지 않는 한.

답변4

아래를 참조하세요

/연장하다

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

글쎄요.

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

관련 정보