Qual é o desempenho do grep/sed/awk em arquivos muito grandes?

Qual é o desempenho do grep/sed/awk em arquivos muito grandes?

Eu queria saber se 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 intervalo de tempo se eu usasse os comandos individuais grep, sed e awk, além de misturá-los.

Obviamente, uma resposta específica não é possível, pois os resultados variam de acordo com as especificações do hardware, mas seria útil se eu pudesse obter uma estimativa geral.

Responder1

Geralmente eu diria que grepé o mais rápido, sedé o mais lento. É claro que isso depende do que você está fazendo exatamente. Acho awkmuito mais rápido que sed.

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

Se você quiser usar grep, sed, awk juntos em pipes, 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 grepna primeira linha pareça desnecessário.

Aliás, você pode acelerar esses comandos LC_ALL=Cse estiver lidando com arquivos de texto ASCII simples.

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

informação relacionada