[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: escapes e metacarateres no sed
From: |
flavio_galvao |
Subject: |
Re: escapes e metacarateres no sed |
Date: |
Sun, 03 Jul 2011 22:53:08 -0000 |
User-agent: |
eGroups-EW/0.82 |
acho que tive dificuldade para compreender o primeiro exemplo por causa das {}
(chaves).
dei uma pesquisada sobre o sed e descobri que as chaves são utilizadas por ele
para fazer agrupamento de comandos para um mesmo endereço.
Daí a necessidade dos escapes nas chaves quando não utilizada a opção -r do sed.
Estou gostando muito dessa linguagem de programação.
Pra quem ta começando como eu recomendo o livro do Julião(quanta intimidade
...hahaha).
obrigado pela resposta.
--- Em address@hidden, jimmy <jimmy.tty@...> escreveu
>
> On Sun, Jul 03, 2011 at 04:38:51PM -0000, flavio_galvao wrote:
> >
> >
> > Caros amigos.
> > Estou aprendendo sobre programação shell com o excelente livro do Júlio
> > Cezar
> > Neves.
> > Estou com uma dúvida a respeito do uso da \ (contra-barra) no sed quando a
> > mesma
> > vem entre apóstrofos.
> >
> > no livro ele dá os seguintes exemplo para trocar data no formato dd/mm/aaaa
> > para
> > o formato aaaa/mm/dd:
> >
> > 1º exemplo (sem opção -r e utilizando a / (barra) como separador)
> >
> > sed 's/^\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\)$/\3\/\2\/\1' <<<
> > 31/12/2009
> >
> > 2º exemplo (com opção -r e utilizando a / (barra) como separador)
> >
> > sed -r 's/^([0-9]{2})\/([0-9]{2})\/([0-9]{4})$/\3\2\1' <<< 31/12/2009
> >
> > 3º e último exemplo (com a opção -r e utilizando o - (hífen) como separador)
> >
> > sed -r 's-^([0-9]{2})/([0-9]{2})/([0-9]{4})$-\3/\2/\1' <<< 31/12/2009
> >
> > no primeiro exemplo os apóstrofos impedem a interpretação do seu conteúdo
> > pelo
> > shell, então os escapes feitos pelas \ (barras invertidas) não teriam efeito
> > algum para o shell na cadeia já que eles não seriam resolvidos. E ainda por
> > cima
> > não estamos utilizando a opção -r do sed que ativa os metacaracteres
> > avançados.
> > Apesar de tudo isso a linha de comandos citada gera o resultado desejado (a
> > mudança de formato).
> Esses escapes são do próprio sed e sim, os apóstrofos são para inibir a
> interpretação de metacaracteres nesses scripts inline para que a linha
> de comando chegue exatamente como precisa para ser compreendida pelo
> interpretador, que neste caso, é o sed, mas poderia ser awk, expect,
> perl, outro(s) shell(s).
>
> >
> > Alguém saberia o porque desse comportamento?
> > Será que o próprio sed resolve os escapes e devolve a linha para o shell
> > que faz
> > a interpretação dos metacaracteres e passa a nova linha para o sed? ou eu
> > viajei
> > na maionese?
> Você apenas inverteu o fluxo na interpretação. A linha de comando entre
> apóstrofos é para o sed interpretar sem a intervenção do shell.
>
> Há casos, principalmente com aspas, onde é necessário escapar tudo
> aquilo que o shell interpreta como metacaractere, inibindo, por exemplo,
> expansão de parâmetros, de processos, interpolação de variáveis.
>
> >
> > espero que eu tenha conseguido expressar bem a minha dúvida.
> > desculpem pelo tamanho do post...
> >
>
>
> --
> "Não manejo bem as palavras
> Mas manipulo bem as strings."
> ------------------------------
>