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: