Pular para o conteúdo

Comando sed não roda no servidor [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Comando sed não roda no servidor [RESOLVIDO]

Enviado em 16/09/2014 - 14:46h

Boa tarde galera,
estou tendo um problema aqui com o comando sed, eu fiz um código para alterar uma linha em um arquivo todos os dias, atualizando a data. Na minha máquina local, funcionou direitinho, mas ai quando passei para o servidor, o comando não está executando, somente o sed, alguém sabe me dizer se é preciso instalar algum pacote para este comando rodar????

Segue a linha de código:

sed -e '1,5s/'$data_ant'/'$data_arq'/g' -e '3,5s/'$data_arq'/'$data_end'/g' $d_destino/teste_ARW.txt > teste_ARW.txt

Desde já agradeço pela atenção!!!

Responder tópico

2. Re: Comando sed não roda no servidor [RESOLVIDO]

Enviado em 16/09/2014 - 15:12h

Cara, olhe a versão do sed no servidor. Às vezes, os parâmetros inseridos não são aceitos ou interpretados d forma diferente. Outra coisa é olhar qual interpretador d comandos está configurado no servidor (se é bash, sh etc.).

3. Re: Comando sed não roda no servidor [RESOLVIDO]

Enviado em 24/09/2014 - 22:28h

Esse tipo de comando que você está fazendo às vezes dá problema porque você tem que expandir as variáveis dentro do comando do sed ($data_end, etc) e isso é meio que problemático dependendo do conteúdo da variável.

Existem diversas formas de fazer isso porém nem todas se comportam da maneira imaginada... o jeito é testar.
como você usou aspas simples em tudo e não deu, tenta de outras formas. já precisei uma vez até usar eval pra fazer isso.

Veja idéias:
http://askubuntu.com/questions/76808/how-to-use-variables-in-sed

Fora que se a sua variável tem characteres como / $ {[ daí o seu comando já era:
http://backreference.org/2009/12/09/using-shell-variables-in-sed/

4. Re: Comando sed não roda no servidor [RESOLVIDO]

Enviado em 25/09/2014 - 04:08h

Já era por quê? Faça em dois passos.

Por exemplo, em lugar de

date="2014/09/25"
sed "s/==DATA==/$data/" arquivo # ERRADO!!
, faça o seguinte.

SED_SPECIAL='[][*^$/\]'

date="2014/09/25"
quoted_date=`echo "$data" | sed "s/\($SED_SPECIAL\)/\\\\\\&/g"` # Esse monte de '\' fica feio mesmo, mas funciona.
sed "s/==DATA==/$quoted_date/" arquivo

5. Re: Comando sed não roda no servidor [RESOLVIDO]

Enviado em 25/09/2014 - 09:38h

paulo1205 escreveu:

Já era por quê? Faça em dois passos.

Por exemplo, em lugar de

date="2014/09/25"
sed "s/==DATA==/$data/" arquivo # ERRADO!!


, faça o seguinte.

SED_SPECIAL='[][*^$/\]'

date="2014/09/25"
quoted_date=`echo "$data" | sed "s/\($SED_SPECIAL\)/\\\\\\&/g"` # Esse monte de '\' fica feio mesmo, mas funciona.
sed "s/==DATA==/$quoted_date/" arquivo
Nessas horas eu sempre ponho o hífen no lugar de barra... tenho menos trabalho.

6. Re: Comando sed não roda no servidor [RESOLVIDO]

Enviado em 25/09/2014 - 13:21h

Galera, muito obrigado mesmo pelas dicas, como vocês haviam falado, este comando é meio chato mesmo, mas usando as dicas que vocês me passaram, eu consegui corrigir os erros aki, e agora está rodando perfeitamente no cron!!!

Obrigado mesmo a todos pela ajuda!!!

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder