[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [ot] sed localizar/substituir com caracteres especiais



Em 08/11/07, Krishnamurti L. L. V. Nunes<krishnalelis@gmail.com> escreveu:
> Em 08/11/07, Denis<denismpa@gmail.com> escreveu:
> > E ai pessoal, blz?
> >
> >
> > bom, seguinte quero substituir isso:
> >
> > jjunior:$1$VyzzTIwz$/y750LY/2CQyKMD8ONlQY/:13816:0:99999:7
> >
> >
> > por isso:
> >
> > jjunior:$2a$10$EA8yiucQjmLCZN/ogamxA.dsrDOGoo.gaytWYhbvCuUB/1TESTE
> >
> > isso eh p sincronizar o password do usuario entre 3 maquinas pega o
> > mais recente e substitui o mais velho.
> >
> > fiz um script pra isso que esta ai abaixo, mas o problema sao as
> > barras dentro da string do sed. Alguem sabe como contornar este
> > problema?
> >
> > #!/bin/bash
> > #programa para sincronizacao dos passwordsdos usuarios autor denis.
> >
> > for i in `diff -y --suppress-common-lines /etc/shadow
> > /etc/shadow_new|tr -d [:blank:]|tr "|" "%"`;
> >         do
> >         echo atualizando o valor:
> >         echo $i
> >         read
> >          antigo=`echo $i |cut -d "%" -f 2`
> >          novo=`echo $i |cut -d "%" -f 1`
> >          echo "sera colocado $novo no lugar de $antigo no arquivo
> > /etc/shadow_new \n"
> >         echo "Prosseguir?"
> >         read
> >         sed -i "s/$antigo/$novo/g" /etc/shadow_new
> >         done;
> >
> >
> > tentei colocar as strings entr 'xx'  e entre "xx" mas nao foi.
> >
> > valeu!
> >
> >
>
> Simplesmente troque o separador do sed.
> O sed aceita vários caracteres como separador dos seus campos, você
> pode fazer por exemplo assim:
>
>  sed -i "s#$antigo#$novo#g" /etc/shadow_new
>
> Desse jeito você consegue  trabalhar facilmente com strings que
> contenham barras.
>
> Isso vale também para a substituição do vim.
>
> --
> Krishnamurti Lelis Lima Vieira Nunes
>
>
Opa! Perfeito!

Testado e funcionando!

Valeu, amigo.

Um abraço,
Denis.



Reply to: