Quão bem o grep / sed / awk é executado em arquivos muito grandes? [fechadas]

2

Eu queria saber se o grep, sed e awk eram ferramentas viáveis para localizar dados em arquivos muito grandes.

Digamos que eu tenha um arquivo de 1 TB. Se eu quisesse processar o texto nesse arquivo, como seria o cronograma se eu usasse os comandos individuais grep, sed e awk, além de misturá-los juntos.

Obviamente, uma resposta específica não é possível, uma vez que os resultados irão variar com base nas especificações de hardware, mas se eu pudesse obter uma estimativa geral que seria útil.

    
por Luke Pafford 22.09.2016 / 08:39

1 resposta

1

Geralmente eu diria que grep é o mais rápido, sed é o mais lento. Claro que isso depende do que você está fazendo exatamente. Eu acho awk muito mais rápido que sed .

Você pode acelerar o grep se não precisar de expressões regulares reais, mas apenas strings fixas simples (opção -F).

Se você quiser usar grep, sed, awk juntos em pipes, então eu colocaria o comando grep primeiro, se possível.

Por exemplo, isto:

grep -F "foo" file | sed -n 's/foo/bar/p'

geralmente é mais rápido que isso:

sed -n 's/foo/bar/p' file

Embora o grep na primeira linha pareça desnecessário.

BTW, você pode acelerar esses comandos usando LC_ALL=C se estiver lidando com arquivos de texto ASCII simples.

Note que toda a minha experiência é baseada nos comandos do gnu. Você também pode tentar implementações diferentes e comparar a velocidade.

    
por 22.09.2016 / 10:54