Comando sed não roda no servidor [RESOLVIDO]

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

Carlos Eduardo de Laia Santos
carlosesantos

(usa Linux Mint)

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!!!


  


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

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

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]

Fernando
phoemur

(usa Debian)

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]

Paulo
paulo1205

(usa Ubuntu)

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]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

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]

Carlos Eduardo de Laia Santos
carlosesantos

(usa Linux Mint)

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!!!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts