기반으로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']foo
및 echo "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.
\'
나와 다른 사용 사례를 갖고 있는 사람이 있다면 $
이에 대해 듣고 싶습니다.