Почему эта простая замена sed
внутри bash
не работает?Простая замена с sed внутри bash не работает
echo '[a](!)' | sed 's/[a](!)/[a]/'
возвращает [a](!)
вместо [a]
. Но почему, учитывая, что только three characters необходимо экранировать в заменяющей строке sed
?
Если я объяснить для случая, когда нужно заменить в строке регулярного выражения и попытаться
echo '[a](!)' | sed 's/\[a\]\(!\)/[a]/'
она до сих пор не работает дополнительных символов.
Я не вижу смысла в захвате * * известный образец часть для использования в замене, то есть избыточные накладные расходы. –
Альтернатива повторяет тот же текст в разделе замены, что и в разделе поиска, что означает, что если/когда этот текст изменяется, вам нужно изменить его в нескольких местах в скрипте, что является принципиально плохой практикой кодирования. –