Substitua caracteres vazios (espaço, tabulação, etc.) por não estarem funcionando com o agrupamento sed e regexp:
sed -i "s|dir(\s*)=(\s*)'${site_path_source}'|dir$1=$2'${site_path_target}'|g"
A linha inteira substitui uma string em um arquivo:
sudo find "${config_path}" -type f -exec sed -i "s|dir(\s*)=(\s*)'${site_path_source}'|dir$1=$2'${site_path_target}'|g" {} \;
Alguma ideia de como consertar isso?
Obrigado!
EDIT1:
Agora usando -r para ativar expressões regulares estendidas, mas ainda não substitui:
sudo find "${config_path}" -type f -exec sed -ir "s|dir(\s*)=(\s*)'${site_path_source}'|dir$1=$2'${site_path_target}'|g" {} \;
Mas ainda não faz a substituição.
EDIT2 (SOLUÇÃO DE TRABALHO): Ao usar \ (\) para agrupamento, FUNCIONA:
sudo find "${config_path}" -type f -exec sed -i "s|dir\(\s*\)=\(\s*\)'${site_path_source}'|dir='${site_path_target}'|g" {} \;
Mas não entendo por que a solução EDIT1 com expressões regulares estendidas -r não está funcionando.
EDIT3 (SOLUÇÃO DE TRABALHO2): usando -r para ativar expressões regulares estendidas, AGORA FUNCIONA:
sudo find "${config_path}" -type f -exec sed -r -i "s|dir(\s*)=(\s*)'${site_path_source}'|dir$1=$2'${site_path_target}'|g" {} \;
Explicação:
- O uso de "sed -ir SUFFIX" está errado porque -i precisa de um sufixo.
- O uso de "sed -r -i SUFFIX" é BOM porque -r e -i são usados separadamente e -i é seguido por um sufixo.