Qual é a causa do erro sed?

0

No meu arquivo grunhido eu tenho o comando assim

"sed -i index 's/API_CONTEXT_URI/http:\/\/localhost:5557/g' www/index.js"

Este não é um arquivo que escrevi; isso tem que vir para mim como um projeto de manutenção. Então eu não entendo essa linha corretamente. Supõe-se que substitua a cadeia API_CONTEXT_URI pelo URL fornecido em index.js . O erro é

can't read s/API_CONTEXT_URI/http://localhost:5557/g: No such file or directory

De acordo com o que eu interpreto, sed não encontrou index.js . Mas há um index.js na pasta www . Eu tentei alterar \/ para \ para escapar de / , mas ainda assim não funcionaria. Vocês podem me ajudar em onde olhar? Eu desconfio sobre o -i e o index no comando.

    
por Vamsi Pavan Mahesh 30.06.2015 / 11:31

1 resposta

5

  1. há um -e ausente antes de s / foo / bar / (*)
  2. há uma confusão, você está (o script) editando index ou www/index.js ?

    se index for um arquivo de modelo (com API_CONTEXT_URL) a ser usado para produzir www/index.js , sugiro

    sed -e s,API_CONTEXT_URL,http://localhost:5557,g index > www/index.js
    

    note que você pode usar qualquer chat um separador entre substituto, eu uso vírgula (,) para evitar fugir muito.

    Se o arquivo a ser editado for www/index.js , use

    sed -i -e s,API_CONTEXT_URL,http://localhost:5557,g  www/index.js
    

    onde

    • -i flag tell sed para editar o arquivo no lugar.

EDITAR: graças a User112638726 e don_crissti, o erro é bastante óbvio

    sed -i index 's/API_CONTEXT_URI/http:\/\/localhost:5557/g' www/index.js

será interpretado por sed como

  • -i editar no lugar,
  • index que é i (insira) ndex ,
  • para os dois arquivos:
  • 's/API_CONTEXT_URI/http:\/\/localhost:5557/g' e www/index.js .

Suponho que não exista nenhum arquivo chamado s/API_CONTEXT_URI/http:\/\/localhost:5557/g , que é um arquivo g no diretório http:\/\/localhost:5557 no diretório API_CONTEXT_URI no diretório s no diretório atual.

Eu sempre uso -e command , apenas no caso de eu precisar colocar dois, descubro que o sed pode lidar com (hoje em dia) um único comando, não sei se era o caso nos velhos tempos.

    
por 30.06.2015 / 11:42