echo "a']" | grep -E "\'"가 일치하지 않는 이유는 무엇입니까?

echo "a']" | grep -E "\'"가 일치하지 않는 이유는 무엇입니까?

기반으로SO에 대한 이 질문,내가 찾은 내용은 다음과 같습니다.

echo "a']" | grep -E "\a"

경기는 괜찮습니다.

echo "a']" | grep -E "\]"

경기는 괜찮습니다.

하지만:

echo "a']" | grep -E "\'"

불일치. 이스케이프 작은따옴표를 정확하게 처리하는 방법을 설명하는 문서를 찾을 수 없습니다 grep -E. Ubuntu 14.04에서 GNU grep 2.16을 사용하고 있습니다.

알아채다:

echo "a']" | grep -E "'"

grep -E일치는 잘 되는데 어떻게 해석 해야 할지 궁금합니다 \'.

고쳐 쓰다:

방금 Cygwin 2.6.1 및 grep 2.27에서 이것을 시도했고 재현할 수 있습니다. 아마도 ?를 사용하면 grep --colour -Eo더 명확한 OK/Fail 결과를 얻을 수 있을까요?

답변1

이는 GNU grep뿐만 아니라 GNU sed 및 GNU awk: echo "a']" | sed "s/\'/foo/"-> a']fooecho "a']" | awk "{sub(/\'/,\"foo\")}1"-> 이기도 합니다 a']foo. POSIX 모드에서 awk를 실행하면 이 작업을 수행하지 않고 예상대로 동작합니다: echo "a']" | awk --posix "{sub(/\'/,\"foo\")}1"-> afoo].

문제는 \'와 같은 의미의 GNU -ism이 있다는 것입니다 $.http://www.regular-expressions.info/gnu.html:

Additional GNU Extensions
....
The anchor \` (backtick) matches at the very start of the subject string,
while \' (single quote) matches at the very end. 

\'나와 다른 사용 사례를 갖고 있는 사람이 있다면 $이에 대해 듣고 싶습니다.

관련 정보