[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...
- escapes e metacarateres no sed,
flavio_galvao <=