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

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

Re: [shell-script] Substituição acima de 9 grupos com sed


From: jimmy
Subject: Re: [shell-script] Substituição acima de 9 grupos com sed
Date: Fri, 6 Nov 2009 17:03:54 -0200
User-agent: Mutt/1.4.2.3i

poderia-se inverter toda a lógica e ao invés de se tentar "cercar" o que
se deseja da string, remover o que não interessa nela, exemplo:

/<uma regex para validação da entrada aqui>/ {
      s/ BRS\?T:/;/;
      s/(/;/;
      s/):/;/;
      s/@/;/;
      s/:\[/;/;
      s/\]:/;/;
      s/: duration: /;/;
      s/ ms statement: /;/;
}

talvez chegasse ao mesmo resultado.

ainda usando o sed pode-se fazer também a segmentação da string onde
seria inserido um caracter "coringa" na parte que receberia um
tratamento posterior, exemplo:

seq -s '' 0 9 | sed -r 
's/^(.)(.)(.)(.)(.)(.)(.)(.)(..)/\1;\2;\3;\4;\5;\6;\7;\8;\f\9/;s/\f(.)(.)$/\1;\2/;'


On Fri, Nov 06, 2009 at 04:28:58PM -0200, Tiago Peczenyj wrote:
> gsed e muitos outros programas tem um limite de 9 retrovisores.
> 
> no seu caso especifico talvez seja o caso de parsear em etapas ou utilizar
> awk com alguma logica mais rebuscada.
> 
> 2009/11/6 Rodrigo <address@hidden>
> 
> >
> >
> > Boa tarde,
> >
> > De acordo com a referência do SED [1], "the replacement can contain \n
> > (n being a number from 1 to 9, inclusive) references".
> >
> > Sendo assim, como podemos fazer uma substituição quando mais de 9
> > grupos são considerados?
> >
> > Por exemplo, eis o que preciso fazer usando o SED:
> >
> > $ echo "2009-11-06 00:00:00
> > BRST:161.148.24.173(33728):user@database:[5256]:LOG: duration:
> > 13504.818 ms statement: INSERT INTO mdl_log" | sed -e 's/^\(.\{19\}\)
> > BR\(S\)\?T:\([0-9.]*\)(\([0-9]*\)):\(.*\)@\(.*\):\[\([0-9]*\)\]:\([A-Z]*\):
> > duration: \([0-9.]*\) ms statement:
> > \(.*\)$/\1;\3;\4;\5;\6;\7;\8;\9;\10/'
> >
> > Isso é, a substituição com o "\10" não funciona, pois ao invés disso
> > ele considera o grupo "\1" e adiciona a string "0".
> >
> > [1]
> > http://www.gnu.org/software/sed/manual/sed.html#index-Command-groups-99
> >
> > Antecipadamente agradeço.
> >
> > --
> > Atenciosamente,
> >
> > Rodrigo Hjort
> > http://agajorte.blogspot.com
> >
> > 2009 : l'Année de la France au Brésil
> > http://anodafrancanobrasil.cultura.gov.br
> >
> >  
> >
> 
> 
> 
> -- 
> Tiago B. Peczenyj
> Linux User #405772
> 
> http://pacman.blog.br
> 
> ------------------------------------

-- 
"Não manejo bem as palavras
Mas manipulo bem as strings."
------------------------------


reply via email to

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