A substituição não precisa de muita citação: apenas barras invertidas e o separador regexp. Por conveniência, o último pode freqüentemente ser escolhido arbitrariamente - ao invés de s /.../.../ pode-se, em muitos programas, dizer s | ... | ... | ou similar.
Assumindo que o caminho é $path
, você poderia fazer:
epath=${path//'\'/'\'}
epath=${epath//'|'/'\|'}
sed "s|\${MY_PATH}|$epath|g" < in > out
Ou se você não tem medo de outros idiomas, pode usar:
perl -e 'my $path = shift(@ARGV); while (<STDIN>) {s|\$\{MY_PATH\}|$path|g; print}' "$path" < in
(Não tenho certeza se acertei a amostra, mas você entendeu.)