bash - vivaolinux - código de comando inválido., apesar dos períodos de escape, usando o sed




so sed tobias (2)

Sendo forçado a usar o CVS para um cliente atual e o endereço alterado para o repositório remoto. A única maneira que posso encontrar para alterar o endereço remoto no meu código local é uma pesquisa recursiva e substituir.

No entanto, com o comando sed, espero trabalhar:

find ./ -type f -exec sed -i "s/192.168.20.1/new.domain.com/" {} \;

Eu recebo um erro para cada arquivo:

sed: 1: ".//file/path ...": invalid command code .

Eu tentei escapar dos períodos no fósforo sed / substituição, mas isso não resolve nada.


Provavelmente seu novo domínio contém / ? Nesse caso, tente usar um separador diferente de / in sed , por exemplo, # , etc.

find ./ -type f -exec sed -i 's#192.168.20.1#new.domain.com#' {} \;

Também seria bom incluir s/// em aspas simples em vez de aspas duplas para evitar a substituição de variáveis ​​ou qualquer outro comportamento inesperado


Se você estiver em um OS X, isso provavelmente não tem nada a ver com o comando sed. Na versão OSX do sed , a opção -i espera um argumento de extension portanto, seu comando é realmente analisado como o argumento de extension e o caminho do arquivo é interpretado como o código de comando.

Tente adicionar o argumento -e explicitamente e dando '' como argumento para -i :

find ./ -type f -exec sed -i '' -e "s/192.168.20.1/new.domain.com/" {} \;

Veja this .





sed