bash - separador - sed escape/
código de comando inválido., a pesar de los períodos de escape, usando sed (3)
Estar obligado a usar CVS para un cliente actual y cambiar la dirección para el repositorio remoto. La única forma en que puedo encontrar para cambiar la dirección remota en mi código local es buscar y reemplazar recursivamente.
Sin embargo, con el comando sed espero trabajar:
find ./ -type f -exec sed -i "s/192.168.20.1/new.domain.com/" {} /;
Me sale un error por cada archivo:
sed: 1: ".//file/path ...": invalid command code .
Intenté escapar de los períodos en el emparejamiento / reemplazo sed pero eso no soluciona nada.
Probablemente su nuevo dominio contenga / ? Si es así, intente usar un separador que no sea / in sed , por ejemplo, # , etc.
find ./ -type f -exec sed -i ''s#192.168.20.1#new.domain.com#'' {} /;
También sería bueno incluir s/// en comillas simples en lugar de comillas dobles para evitar la sustitución de variables o cualquier otro comportamiento inesperado
Si está en un OS X, probablemente esto no tiene nada que ver con el comando sed. En la versión OSX de sed , la opción -i espera un argumento de extension para que su comando se analice como el argumento de extension y la ruta del archivo se interprete como el código de comando.
Intente agregar el argumento -e explícitamente y dando '''' como argumento a -i :
find ./ -type f -exec sed -i '''' -e "s/192.168.20.1/new.domain.com/" {} /;
Mira this
Simplemente olvidaste proporcionar un argumento a -i . Solo cambia -i a -i '''' .
Por supuesto, eso significa que no desea que sus archivos sean respaldados; de lo contrario, proporcione la extensión de su elección, como -i .bak .