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

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

Re: [shell-script] Filtrar linhas no arquivo texto


From: Sergio Nery Simoes
Subject: Re: [shell-script] Filtrar linhas no arquivo texto
Date: Mon, 16 Jul 2007 14:25:45 -0300

Olá Pessoal,

esqueci de colocar como observação que na verdade testei DEZ VEZES cada
comando - para evitar os problemas já mencionados -, antes de enviar os
resultados pra lista e todos os resultados variaram muito pouco - décimos de
segundos.

O sed foi o último a ser testado, apenas coloquei-o primeiro para que os
tempos ficassem em ordem decrescente.

Assim, os valores obtidos são confiáveis, e apesar de serem totalmente
dependentes do hardware.

Seria bom que alguem testasse (várias vezes cada comando) em uma máquina com
configuração diferente para compararmos os resultados.

Sérgio.




Em 16/07/07, Bruno Gunter Fricke <address@hidden> escreveu:
>
>   Hmmmm... O wc -l já acessou o arquivo, acho que o cat/tac seria
> desnecessário, não?
>
> []'s
> Gunter
>
> Em Seg, 2007-07-16 às 11:47 -0300, Julio C. Neves escreveu:
>
> > Concordo totalmente com o Leslie. Seria legal que a pessoa que fez o
> > primeiro teste, o refaça observando o que o Leslie falou e republique
> > aqui o
> > resultado.
> >
> > Abraços,
> > Julio
> > :wq
> >
> > Em 16/07/07, Leslie Watter <address@hidden <watter%40gmail.com>>
> escreveu:
> > >
> > > hmmm,
> > >
> > > Não sei não, pra não balizar o teste, antes de passar o arquivo pelo
> > sed,
> > > você poderia ter feito um
> > >
> > > $ cat arquivo > /dev/null
> > >
> > > dai sim, todos os testes.
> > >
> > > Deixa eu explicar.
> > > Como o sed foi o primeiro a ler o arquivo, ele teve de pagar o tempo
> > de
> > > acesso ao arquivo no disco. Isso envolve o tempo de leitura no
> > disco, o
> > > que
> > > em relação ao processamento é muito lento e que pode justificar a
> > > disparidade tão grande.
> > >
> > > A idéia aqui não é justificar o sed, mas tornar o teste mais justo
> > com
> > > todos
> > > os aplicativos.
> > >
> > > Outra coisa, estou supondo que vc não fez isso. Caso tenha feito,
> > ok, os
> > > testes são mais válidos. Mas lembre-se que o resto do sistema também
> > > influencia, e muito, nesse tipo de avaliação.
> > >
> > > Abraço,
> > >
> > > LEslie
> > >
> > > 2007/7/14, Sergio Nery Simoes <address@hidden<sergionery%40gmail.com>
> <sergionery%
> > 40gmail.com>
> > > >:
> > >
> > > >
> > > > Pessoal,
> > > >
> > > > apenas por curiosidade sobre o desempenho, fiz uma comparação de
> > tempo
> > > > entre
> > > > as soluções propostas, com o sed, o cut e o awk.
> > > > A apesar da minha grande preferência pelo awk, após os resultados
> > vou
> > > > rever
> > > > meus conceitos sobre o cut (rs).
> > > > Os testes foram feitos com um arquivo de dois milhões de linhas em
> > um P4
> > > > 2.2GHz.
> > > > Em todos foi feito o redirecionamento para /dev/null e por isso
> > não
> > > > utilizei
> > > > a opção -i do sed.
> > > >
> > > > Observem:
> > > >
> > > > $ wc -l arq
> > > > 2000000 arq
> > > >
> > > > $ time sed 's/documento_//;s/.odt//' arq > /dev/null
> > > > real 0m14.492s
> > > > user 0m13.805s
> > > > sys 0m0.076s
> > > >
> > > > $ time awk -F '[_.]' '{print $2}' arq > /dev/null
> > > > real 0m2.112s
> > > > user 0m2.020s
> > > > sys 0m0.044s
> > > >
> > > > $ time cut -d '_' -f 2 arq | cut -d '.' -f 1 > /dev/null
> > > > real 0m0.944s
> > > > user 0m0.812s
> > > > sys 0m0.104s
> > > >
> > > > reparem que o sed teve o pior desempenho ~14s, o awk não foi o
> > melhor
> > > mais
> > > > teve um excelente resultado ~2s, sendo o cut o mais rápido ~1s,
> > duas
> > > vezes
> > > > mais rápido que o awk e 14 vezes mais rapido que o sed.
> > > >
> > > > O fato de alguns comando serem mais sofisticados (eg: processar
> > ERs,
> > > etc),
> > > > podem torná-los mais lentos ao utilizarmos para operações simples.
> > > >
> > > > Conclusão: se quisermos obter desempenho, devemos utilizar
> > comandos mais
> > > > simples sempre que possível.
> > > >
> > > > Att,
> > > > Sergio.
> > > >
> > > > Em 06/07/07, Tiago Barcellos Peczenyj
> > <address@hidden <tiago.peczenyj%40gmail.com><tiago.peczenyj%
> 40gmail.com>
> > > <tiago.peczenyj%40gmail.com>>
> > > > escreveu:
> > > > >
> > > > > Bom, existem muitas formas:
> > > > >
> > > > > awk -F '[_.]' '{print $2}' arquivo
> > > > >
> > > > > ou
> > > > >
> > > > > cut -d '_' -f 2 arquivo | cut -d '.' -f 1
> > > > >
> > > > > []s Tiago
> > > > >
> > > > > On 7/6/07, Eduardo Lucas
> > <address@hidden <eduardo.lucas%40orbisat.com.br><
> eduardo.lucas%40orbisat.com.br>
> > > <eduardo.lucas%40orbisat.com.br>
> > > > <eduardo.lucas%40orbisat.com.br>>
> > > >
> > > > > wrote:
> > > > > >
> > > > > > Pessoal...
> > > > > > estou como as seguintes linhas do arquivo
> > > > > >
> > > > > > documento_0012526A.odt
> > > > > > documento_0035555A.odt
> > > > > > documento_0054443A.odt
> > > > > > documento_0022222A.odt
> > > > > > documento_0034344A.odt
> > > > > > documento_0055555A.odt
> > > > > >
> > > > > > preciso da saida em um arquivo dele assim dele assim:
> > > > > >
> > > > > > 0012526A
> > > > > > 0035555A
> > > > > > 0054443A
> > > > > > 0022222A
> > > > > > 0034344A
> > > > > > 0055555A
> > > > > >
> > > > > > como faço isto...
> > > > > > desde já grato
> > > > > >
> > > > > > Eduardo
> > > > > >
> > > > > >
> > > > >
> > > > > --
> > > > > Tiago B Peczenyj
> > > > > Linux User #405772
> > > > >
> > > > > http://peczenyj.blogspot.com/
> > > > >
> > > > > [As partes desta mensagem que não continham texto foram
> > removidas]
> > > > >
> > > > >
> > > > >
> > > >
> > > > [As partes desta mensagem que não continham texto foram removidas]
> > > >
> > > >
> > > >
> > >
> > > --
> > > Leslie H. Watter
> > >
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> > >
> > >
> >
> > --
> > Abraços,
> > Julio
> > http://www.julioneves.com - Um livro sobre Bash completo e on-line
> > :wq
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
> >
> >
> >
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>


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



reply via email to

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