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

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

Re: [shell-script] Re: escapes e metacarateres no sed


From: Julio C. Neves
Subject: Re: [shell-script] Re: escapes e metacarateres no sed
Date: Sun, 3 Jul 2011 22:13:43 -0300

Fala Flavião, ;)
Logo lá no início da segunda parte do livro, eu distinguo as aspas dos
apóstrofos dizendo que as primeiras permitem que o Shell "veja" o cifrão
($), a contrabarra (\) e as crases. Mostro tb a ordem que o shell usa para
interpretar uma linha de cmds e a execução da instrução é a última coisa que
acontece nessa sequencia.

Assim sendo, os apóstrofos não permitem que o Shell "veja" as contrabarras,
já que elas são significativas para a máquina de Expressões Regulares.

Para finalizar: sou chamado de Julião por 90% das pessoas do Sw Livre, assim
sendo fique à vontade para fazer o mesmo. O problema será se eu parar de
beber chope e emagrecer... ;)

  Cordialmente,

Julio Neves (Julião)
*Quer programar bem em Shell?
*

*Use este endereço de e-mail, o Skype ou ☎ (21)8112-9988 ☎*

*
*

**

*
*
My profiles: [image: Twitter] <http://twitter.com/juliobash>
Contact me: [image: Skype] julioneves1


Em 3 de julho de 2011 19:53, flavio_galvao <address@hidden>escreveu:

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


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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