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

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

Re: [shell-script] Buffer?


From: Flavio Junior
Subject: Re: [shell-script] Buffer?
Date: Fri, 11 Apr 2008 09:47:20 -0300

Bom dia..

Então Fabiano, eu tambem não entendi muito a ideia da linha (até
entendi os comandos, mas o "algoritmo" que nao entendi)...

E veja, ele acaba replicando todas as linhas do intervalo:

lazlo:~# cat x
> <INCLUIR>
> ..CLASSE:MS
> -MANDADO
> -8901223244
> ..ID_DOCUMENTO:22
> <INCLUIR>
> ..CLASSE:MS
> -MANDADO
> -8901223245
> ..ID_DOCUMENTO:23
> <INCLUIR>
> ..CLASSE:MS
> -MANDADO
> -8901223246
> ..ID_DOCUMENTO:24
lazlo:~# sed 'x;n;N;N;x;N;G' x

> <INCLUIR>
> ..ID_DOCUMENTO:22
> ..CLASSE:MS
> -MANDADO
> -8901223244
> ..CLASSE:MS
> -MANDADO
> -8901223244
> <INCLUIR>
> ..ID_DOCUMENTO:23
> ..CLASSE:MS
> -MANDADO
> -8901223245
> ..CLASSE:MS
> -MANDADO
> -8901223245
> <INCLUIR>
> ..ID_DOCUMENTO:24
> ..CLASSE:MS
> -MANDADO
> -8901223246
lazlo:~#


Quanto a performance, entre o sed e o ed o sed sempre vai levar
vantagem, devido a ser um editor de fluxo contra um editor de
arquivos.

Aproveita e explica pra gente esse sed ai ;)


--

Flávio do Carmo Junior

2008/4/11 Eduardo <address@hidden>:
>
>
>
>
>
>
> Fabiano,
>
>  eu não entendi a sua solução.
>  E ela também não funcionou. :)
>
>  2008/4/10 Fabiano Caixeta Duarte <address@hidden>:
>
>
>
>  > Eduardo escreveu:
>  >
>  > > node1:~# cat x.txt
>  > >
>  > > <INCLUIR>
>  > > ..CLASSE:MS
>  > > -MANDADO
>  > > -8901223244
>  > > ..ID_DOCUMENTO:22
>  > > <INCLUIR>
>  > > ..CLASSE:MS
>  > > -MANDADO
>  > > -8901223245
>  > > ..ID_DOCUMENTO:23
>  > > <INCLUIR>
>  > > ..CLASSE:MS
>  > > -MANDADO
>  > > -8901223246
>  > > ..ID_DOCUMENTO:24
>  > > <INCLUIR>
>  > > ..CLASSE:MS
>  > > -MANDADO
>  > > -8901223247
>  > > ..ID_DOCUMENTO:25
>  > > <INCLUIR>
>  > > ..CLASSE:MS
>  > > -MANDADO
>  > > -8901223248
>  > > ..ID_DOCUMENTO:26
>  > > <INCLUIR>
>  > > ..CLASSE:MS
>  > > -MANDADO
>  > > -8901223249
>  > > ..ID_DOCUMENTO:27
>  > >
>  > > e deveria ficar assim:
>  > >
>  > > node1:~# cat y.txt
>  > >
>  > > <INCLUIR>
>  > > ..ID_DOCUMENTO:22
>  > > ..CLASSE:MS
>  > > -MANDADO
>  > > -8901223244
>  > > <INCLUIR>
>  > > ..ID_DOCUMENTO:23
>  > > ..CLASSE:MS
>  > > -MANDADO
>  > > -8901223245
>  > > <INCLUIR>
>  > > ..ID_DOCUMENTO:24
>  > > ..CLASSE:MS
>  > > -MANDADO
>  > > -8901223246
>  > > <INCLUIR>
>  > > ..ID_DOCUMENTO:25
>  > > ..CLASSE:MS
>  > > -MANDADO
>  > > -8901223247
>  > > <INCLUIR>
>  > > ..ID_DOCUMENTO:26
>  > > ..CLASSE:MS
>  > > -MANDADO
>  > > -8901223248
>  > > <INCLUIR>
>  > > ..ID_DOCUMENTO:27
>  > > ..CLASSE:MS
>  > > -MANDADO
>  > > -8901223249
>  >
>  > Estou acompanhando esta thread e vi a solução do Flávio. Muito legal.
>  > Nunca fiz nada em ed. Entretanto, fiz uma solução com sed que também
>  > serviu de aprendizado.
>  >
>  > sed 'x;n;N;N;x;N;G' x.txt
>  >
>  > Basicamente tem a ver com manipulação do que o sed chama de pattern
>  > space e hold space.
>  >
>  > Quanto à performance, segue um teste com arquivos de 1.7Mb (143998
> linhas)
>  >
>  > $ time ed x.txt <<<$'g/^\.\.ID_DOC/m.-4\nw\nq'
>  > 1098000
>  > 1098000
>  >
>  > real 0m4.627s
>  > user 0m4.560s
>  > sys 0m0.036s
>  >
>  > $ time sed -i 'x;n;N;N;x;N;G' x.txt
>  >
>  > real 0m0.282s
>  > user 0m0.228s
>  > sys 0m0.052s
>  >
>  > --
>  > Fabiano Caixeta Duarte
>  > Especialista em Redes de Computadores
>  > Linux User #195299
>  > Ribeirão Preto - SP
>  >
>  >
>
>  [As partes desta mensagem que não continham texto foram removidas]
>
>  


reply via email to

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