O '
que você tem antes de s/…
sair do modo de cota única, fazendo com que todo o s//__construct/
(até o próximo '
) seja analisado como sem aspas pelo seu shell . Neste modo, é traduzido para apenas
1
, então sed acaba recebendo s/1/__construct/
.
Note que isso não funcionaria de qualquer maneira , porque backreferences em expressões regulares POSIX usadas por sed só podem se referir a grupos dentro do mesmo regexp, e sed não tem uma sintaxe especial para usar correspondências anteriores.
Você precisaria de algo mais avançado - por exemplo:
perl -pe '
if (/^class (\w+)/) {
$class = $1;
}
elsif (/^\}$/) {
$class = "";
}
elsif ($class and /function \Q$class\E\(/) {
s//function __construct(/;
}
'