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: Sat, 14 Jul 2007 13:01:18 -0300

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> 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>>
> 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]



reply via email to

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