Compare Preços no Buscape e no BondFaro
BuscaPé, líder em comparação de preços na América Latina

HP AMD Turion 64 X2 1.9 GHz
2 Gb RAM - 160 Gb HD

C++ Guia para Iniciantes
Herbert Schildt

Filmadora Samsung
SC-MX10A Digital

Patch Adams
O Amor é Contagioso

CD Silence
Sonata Arctica

Pinguim de Pelúcia

Patinho Faminto
www.patinho.net

Apostilas
Expr Regular
Remasterização
SED
Shell Script

Distros
Dizinha
Patinho Faminto

Nerd
Desejo Nerd
Shell Scripts

Artístico
Livro
Musica
Poesias
Tirinhas

Bobagens
Ascii Art
Games Antigos
Porque Amar Nerds
Porque Não Amar Nerds

Eu
About Me
Recomendo
Contato
DOAÇÕES

Amigos
Aurélio
Jogos Antigos
NeoDizinha
Nerds Nervosos
ProibidoParaNormais


* = Recentemente Atualizado



website stats
Locations of visitors to this page

Anúncio provido pelo BuscaPé
BuscaPé, líder em comparação de preços na América Latina

Ver Indice Geral da Apostila de SED

Endereço com Expressão Regular

Já vimos que o SED aceita expressão regular, já vimos que o SED encontra linhas que possuam uma palavra, já vimos que o SED substitui uma palavra por outra...
Então vamos juntar tudo?
- Juntar tudo? - você me pergunta - Como assim?
Vamos usar uma expressão regular para encontrar diversas linhas e substituir palavras nessa linha.
- Como? - você me pergunta novamente.

Vamos para a prática que é melhor.
Lembra que nosso texto começa com a data "28-05-2008", imagine que você queira modificar o formato da data para "28/05/2008".
- Ah! Mas isso é fácil é só usar sed "s/-/\//g" - Você me diz

Boa tentativa, mas não daria muito certo... Lembre-se que nesse arquivo temos a linha:
- Oi! Seu cachorrinho tem telefone?
Usando seu método a linha ficará:
/ Oi! Seu cachorrinho tem telefone?

 
 

O que faremos então?
Simples, definiremos, através de uma Expressão Regular, que a linha a ser substituída é a que contém a data e que será substituído "-" por "/"
Mas antes de ir direto ao ponto, vamos por passos para ficar mais fácil

Digite no Terminal

sed "/28-05-2008/s/-/\//g" mensagem
Mostrará na tela
28/05/2008
Olá,
Estarei em casa semana que vem, no dia 4.
pq vc ñ vem para gente fazer aquele trabalho que precisamos fazer?
Hj estava passeando com meu cachorro e veio um cara e disse:
- Oi! Seu cachorrinho tem telefone?
Que coisa tosca meu! Você ñ acha? ñ sei o que esse povo tem na cabeça.
Abraços

Até agora fácil de entender:
/28-05-2008/ Faz o SED pegar a linha que possuir "28-05-2008"
s/-/\//g Faz o SED substituir "-" por "/"
Atenção:A barra invertida ( \ ) antes da barra / serve para o SED entender que queremos literalmente a barra /, caso contrário o SED se confundirá e achará que estamos finalizando um comando.

 
 

Agora vamos fazer o SED buscar por qualquer data de 01-01-0000 até 31-12-9999
Vamos pensar...
Um mês tem no máximo 31 dias, então o primeiro dígito do dia só pode ser 0,1,2 ou 3.
O segundo dígito de dia pode ser de 0 a 9...
Então definimos para os dias:
[0-3][0-9]

O primeiro dígito para definir o mês pode ser 0 ou 1.
E o segundo dígito também vai de 0 a 9.
[01][0-9]

Para definir ano de 0000 até 9999 os quatro dígitos vão de 0 a 9
[0-9][0-9][0-9][0-9]

Então para definir o tipo de data xx-xx-xxxx fica:
[0-3][0-9]-[01][0-9]-[0-9][0-9][0-9][0-9]

Veja como fica

Digite no Terminal

sed "/[0-3][0-9]-[01][0-9]-[0-9][0-9][0-9][0-9]/s/-/\//g" mensagem
Mostrará na tela
28/05/2008
Olá,
Estarei em casa semana que vem, no dia 4.
pq vc ñ vem para gente fazer aquele trabalho que precisamos fazer?
Hj estava passeando com meu cachorro e veio um cara e disse:
- Oi! Seu cachorrinho tem telefone?
Que coisa tosca meu! Você ñ acha? ñ sei o que esse povo tem na cabeça.
Abraços

 
 

- E se eu substituir a ER de ano de "[0-9][0-9][0-9][0-9]" para "[0-9]{4}"? Afinal as chaves vão indicar que quero 4 dígitos de 0-9, certo?
Certo! Mas para funcionar você precisa chamar o SED com a opção "-r" que ativa expressões regulares extendidas, sem a opção "-r" não funciona!
Veja como fica:

Digite no Terminal

sed -r "/[0-3][0-9]-[01][0-9]-[0-9]{4}/s/-/\//g" mensagem 

 
 

Nota: 10

Votar:
Postado em: 2008-06-11

Ver Indice Geral da Apostila de SED

Doações
Se quer nos ajudar, pode doar pelo PagSeguro

Ou pode doar pelo Paypal clicando no botão DONATE

Compare Produtos, Lojas e Preços


As poesias devem virar um livro impresso?
Claro
Só se tiver menos de 60 páginas
Só se tiver entre 60 e 120 páginas
Só se tiver mais que 120 páginas
Só vou comprar se for barato
Só vou comprar para você ficar feliz
Livro? Que Livro? Que poesia?
Resultado