Это не просто GNU grep с GNU sed и GNU awk: echo "a ']" | sed "s / \ '/ foo /"
-> a'] foo
и echo "a ']" | awk "{sub (/ \ '/, \" foo \ ")} 1"
-> a'] foo
. Когда вы запускаете awk в режиме POSIX, он этого не делает, а вместо этого демонстрирует ожидаемое поведение: echo "a ']" | awk --posix "{sub (/ \ '/, \" foo \ ")} 1"
->
afoo]
.
Проблема в том, что существует GNU-изм, который \ '
означает то же самое, что и $
, см. 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.
Если у кого-нибудь есть вариант использования, в котором \ '
отличается от $
, я бы хотел его услышать.