[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] grep e fgrep
From: |
Julio C. Neves |
Subject: |
Re: [shell-script] grep e fgrep |
Date: |
Sun, 21 Jul 2013 09:53:14 -0300 |
Fala Cesar,
esfriou pra chuchu aí no sul e vc partiu para testar shell, né? ;)
Seguinte Cesar, repare que vou pegar o teu exemplo e ampliá-lo:
$ time grep 456000 arquivo
456000
real 0m0.031s
user 0m0.004s
sys 0m0.016s
$ time fgrep 456000 arquivo
456000
real 0m0.035s
user 0m0.008s
sys 0m0.004s
$ time egrep 456000 arquivo
456000
real 0m0.032s
user 0m0.008s
sys 0m0.004s
$ time grep -F 456000 arquivo
456000
real 0m0.019s
user 0m0.016s
sys 0m0.004s
No meu 'mainframe' aqui (processador Lentium) os tempos foram um pouco
superiores aos seus, mas pode-se ver que o fgrep, o grep e o egrep tiveram
os tempo bem semelhantes, porém o grep -F foi mais rápido. Isso não
acontece no UNIX (compatível com o SVr4).
Eu já vi o fgrep e o egrep, em versões mais antigas do GNU grep, serem
scripts em Shell que chamavam respectivamente o grep -F e o grep -E,
passando os parâmetros recebidos (obviamente mais lentos).
Hj isso mudou, o man diz:
"three variant programs egrep, fgrep and rgrep are available. egrep is the
same as grep -E. fgrep is the same as grep -F. rgrep is the same as grep
-r. Direct invocation as either egrep or fgrep is deprecated, but is
provided to allow historical applications that rely on them to run
unmodified."
Daí tiramos algumas conclusões:
1 - Ele diz que (f|e)grep é o mesmo que grep -(F|E). Eu não creio, veja:
$ ls -l /bin/{"",f,e}grep
-rwxr-xr-x 1 root root 104440 2010-05-09 11:19 /bin/egrep
-rwxr-xr-x 1 root root 67500 2010-05-09 11:19 /bin/fgrep
-rwxr-xr-x 1 root root 104472 2010-05-09 11:19 /bin/grep
Se fosse assim, o tamanho do código dos 3 seria semelhante ou, pelo do
(f|e)grep seriam.
2 - Ele diz qeu o (f|e)grep estão sendo descontinuados, nisso eu acredito,
pq já existem implementações UNIX (como o AIX) que nem sabem do que se
trata o (e|f)grep.
Concluindo: tenho de ler o código para entender melhor isso, mas enquanto
não o fizer, continuarei usando grep -(F|E).
Abcs,
Julio
*@juliobash
*
Em 20 de julho de 2013 15:00, César Vianna <address@hidden>escreveu:
> **
>
>
> Pessoal, para testar a diferença entre grep e fgrep criei um arquivo com
> 500.000 linhas com números em sequência.
>
> $ seq 500000 > arquivo
>
> Depois testei o tempo de pesquisa por qualquer número
>
> $ time grep 456000 arquivo
> 456000
>
> real 0m0.020s
> user 0m0.004s
> sys 0m0.016s
>
> $ time fgrep 456000 arq
> 456000
>
> real 0m0.021s
> user 0m0.008s
> sys 0m0.012s
>
> Dúvida: o tempo do fgrep não deveria ser menor do que do grep?
>
> --
> Abraço,
> César Vianna
> http://about.me/vianna
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
[As partes desta mensagem que não continham texto foram removidas]