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'
세 문자열 중 하나가 검색됩니다: abc
및 def
및 123
.
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에서는 기본 구문과 확장 구문 간에 사용 가능한 기능에 차이가 없습니다.