grep -egrep -E. 이제 grep manpage에서 다음을 얻었습니다.

-E, –extended-regexp

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

-e PATTERN, –regexp = PATTERN

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

위의 설명이 이해가되지 않습니다.

그러면 누군가에게 나는 examples를 사용하여 둘의 차이점과 언제 어떤 옵션을 사용해야하는지에 대해 설명합니다.

PS : 버전 : grep (GNU grep) 2.10

댓글

  • 참조 : unix.stackexchange.com/questions/17949/ …
  • -e의 목적은 실제로 정규 표현식이 대시로 시작될 때 모호성을 없애는 것입니다. 따라서 grep ---foounrecognized option: ---foo를 제공하지만 정규 표현식 iv에 대해 grep에 grep -e ---foo라고 말할 수 있습니다. id = “1ef8b512ee”>

.

답변

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

댓글

  • 그러므로 echo "hello" | grep -o -e 'h|l'를 수행합니다. |가 특별한 의미를 잃고 echo "hello" | grep -o -E 'h|l' 원하는 결과를 얻었습니다.
  • 예. echo "hello" | grep -o -e 'h' -e 'l'는이 경우 -E를 버리고 싶다면 작동합니다.
  • grep -e -o 'h|l'는 문자 그대로 h|l와 일치하지만 grep -e -o 'h\|l'h 또는 l 및 -E it ' 반대
  • @ronnie it '의 안타깝게도 " 기능 "이 SE 사이트간에 사용자를 따라 오려면 200 개 이상의 평판이 필요합니다 …

Answer

또한 grep -e에서는 검색에 여러 문자열을 사용할 수 있습니다. "grep -e "abc" -e "def" -e "123"abcdef123.

이것은 \|가있는 grep "abc\|def\|123"와 매우 유사하게 작동합니다. or 용이지만 c 좀 더 이해하기 쉬울 것입니다.

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

Answer

아래 참조

/ 확장

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

따라서 , 다시 한 번.

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

코멘트

  • 기능 은 기본과 확장간에 동일하지만 구문이 약간 다릅니다. (, ), | 등과 같은 정규 표현식 특수 문자는 백 슬래시 이스케이프 처리되어야합니다. 기본 정규 표현식에는 특별한 의미가 있지만 확장되지는 않습니다 (문자열 리터럴로 처리하기 위해 이스케이프 처리되어야 함)

Answer

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

grep PATTERN 

와 동일

grep -e PATTERN 

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

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다