shell-script-pt
[Top][All Lists]
Advanced

[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."
> ------------------------------
>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]