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

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

escapes e metacarateres no sed


From: flavio_galvao
Subject: escapes e metacarateres no sed
Date: Sun, 03 Jul 2011 16:38:51 -0000
User-agent: eGroups-EW/0.82

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).

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?

espero que eu tenha conseguido expressar bem a minha dúvida.
desculpem pelo tamanho do post...



reply via email to

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