¿Qué tan bien funciona grep/sed/awk en archivos muy grandes?

¿Qué tan bien funciona grep/sed/awk en archivos muy grandes?

Me preguntaba si grep, sed y awk eran herramientas viables para buscar datos en archivos muy grandes.

Digamos que tengo un archivo de 1TB. Si quisiera procesar el texto en ese archivo, ¿cómo sería el período de tiempo si usara los comandos individuales grep, sed y awk, además de mezclarlos?

Obviamente, no es posible una respuesta específica ya que los resultados variarán según las especificaciones del hardware, pero si pudiera obtener una estimación general, sería útil.

Respuesta1

Generalmente diría que grepes el más rápido, sedes el más lento. Por supuesto, esto depende de lo que estés haciendo exactamente. Encuentro awkmucho más rápido que sed.

Puede acelerar grep si no necesita expresiones regulares reales sino solo cadenas fijas simples (opción -F).

Si desea utilizar grep, sed, awk juntos en tuberías, entonces, si es posible, colocaría el comando grep primero.

Por ejemplo este:

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

suele ser más rápido que esto:

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

Aunque lo grepde la primera línea parece innecesario.

Por cierto, puedes acelerar estos comandos LC_ALL=Csi estás tratando con archivos de texto ASCII simples.

Tenga en cuenta que toda mi experiencia se basa en los comandos de gnu. También puedes probar diferentes implementaciones y comparar la velocidad.

información relacionada