패턴에서 \ $를 사용할 때 grep end egrep의 다른 동작을 이해할 수 있습니다.egrep 및 grep과 달러 차이
더 구체적으로 :
grep "\$this->db" file # works
egrep "\$this->db" file # does not work
egrep "\\$this->db" file # works
어떤 하나의 이유를 말해 또는 일부 설명을 연결할 수 있습니까? 대단히 감사합니다.
패턴에서 \ $를 사용할 때 grep end egrep의 다른 동작을 이해할 수 있습니다.egrep 및 grep과 달러 차이
더 구체적으로 :
grep "\$this->db" file # works
egrep "\$this->db" file # does not work
egrep "\\$this->db" file # works
어떤 하나의 이유를 말해 또는 일부 설명을 연결할 수 있습니까? 대단히 감사합니다.
쉘의 이스케이프 처리로 백 슬래시를 먹었으므로 처음 두 경우에 정규 표현식은 $this->db
입니다. 차이점은 grep
은 일반 문자로 정규 표현식의 끝 부분에없는 $
을 처리하지만 egrep
은 행의 끝과 일치하는 정규 표현식으로 취급합니다.
이중 백 슬래시로 인해 백 슬래시가 egrep
으로 전송됩니다. 이것은 $
을 이스케이프 처리하므로 줄 끝과 일치하는 것이 아니라 일반 문자로 처리됩니다.
는 man grep
를 참조하십시오 정규식은 백 슬래시와 같은 메타 문자 (egrep
의 사용을 통해) 활성화 된 경우
-E, --extended-regexp
Interpret PATTERN as an extended regular expression (ERE, see below). (-E is specified by POSIX.)
백 슬래시로 이스케이프해야합니다. 따라서 리터럴 백 슬래시와 일치 시키려면 \\
이 필요합니다.