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 <[EMAIL PROTECTED]>: > > 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 <[EMAIL > PROTECTED]<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 <[EMAIL PROTECTED]<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]