に基づいて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.
\'
私と他のユースケースを持っている人がいる場合は、$
これについて聞きたいです。