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

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

Re: [shell-script] ser apos n caracter


From: Julio C. Neves
Subject: Re: [shell-script] ser apos n caracter
Date: Fri, 7 Mar 2008 10:28:10 -0300

Fala Djan,
Acho que o principal não é a simpatia por um comando, mas sim a sua
performance. A solução do Tiago é melhor pq usa bash puro, isto é, não
precisa carregar nenhum módulo externo (como o sed) para funcionar, já que é
tudo intrínseco (builtin).

Vou tentar explicar:

$ sed 's/\([0-9]\{2\}\)\([0- 9]\{2\}\)/20\1 \2/;s-\.-/-g' <<< 20.07.0714
:15:57
Os parênteses (que precisam ser escapados no sed) formam grupos cujos
conteúdos são armazenados em memória e que posteriormente são recuperados
por \1, \2, ...\9. Assim sendo montei um grupo com 2 algarismos ({2} com as
chaves escapadas) seguido por outro tb com 2 algarismos. Como somente 0714
tem 4 algarismos, o primeiro grupo recebe 07 e o 2o. 14. Isso foi
substituído por 20\1 \2(2007 14). O here string (<<<) veja
aqui<https://twiki.softwarelivre.org/bin/view/TWikiBar/TWikiBarBirinaite#Here_Strings>
.

Abração,
Julio




Em 07/03/08, Djan Marques <address@hidden> escreveu:
>
>   Ok.
> Apesar da solução do Tiago ser melhor prefiro sed.
>
> Consegui.
> Estou tentando colocar um espaço também após 57 ou seja no final,
> Mas só estou conseguindo misturar os dados.
>
> Caso possa responder poderia mandar explicação junto para que eu possa
> compreender.
>
> ----- Mensagem original ----
> De: Julio C. Neves <address@hidden <julio.neves%40gmail.com>>
> Para: address@hidden <shell-script%40yahoogrupos.com.br>
> Enviadas: Terça-feira, 4 de Março de 2008 14:10:19
> Assunto: Re: [shell-script] ser apos n caracter
>
> Aê Djan,
> é provável que alguém te dê uma resposta mais otimizada, porém
> rapidamente,
> o que me ocorreu foi o seguinte:
>
> $ sed 's/\([0-9]\{ 2\}\)\([0- 9]\{2\}\) /20\1 \2/;s-\.-/-g' <<< 20.07.0714
> :15:57
> 20/07/2007 14:15:57
>
> Na primeira parte do sed eu coloquei o século (2007) e o espaço entre a
> data
> e a hora. No segundo pedaço, troquei os pontos por barras . Repare que
> usei
> como separador do sed hífem (-) para não confundir com a barra que eu
> queria
> trocar.
>
> Abraços,
> Julio
>
> Em 04/03/08, Djan Marques <djan.marques@ yahoo.com. br> escreveu:
> >
> > Ola!
> >
> > Em minhas pesquisas só não encontrei como inserir um ou mais caracteres
> > apos uma posição específica.
> >
> > Original -> 20.07.0714:15: 57
> > Fiz cat gez.txt |sed 's/\./\//g'
> > Ficou -> 20/07/0714:16: 08
> >
> > Penso que falta mais dois passos
> > Um para ficar assim: 20/07/200714: 16:08
> > --
> > Outro para ficar 20/07/2007 14:16:08
> > _
> >
> > 20/07/2007 14:16:08 assim que tem q ficar .
> >
> > Desde Já agrade agradeço.
> >
> > Abra sua conta no Yahoo! Mail, o único sem limite de espaço para
> > armazenamento!
> > http://br.mail. yahoo.com/
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
>
> --
> Abraços,
> Julio
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> Abra sua conta no Yahoo! Mail, o único sem limite de espaço para
> armazenamento!
> http://br.mail.yahoo.com/
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>



-- 
Abraços,
Julio


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



reply via email to

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