Problema de rendimiento al analizar archivos de registro grandes (~ 5 gb) con awk, grep, sed

Actualmente estoy tratando con archivos de registro con tamaños de aprox. 5gb. Soy bastante nuevo en analizar archivos de registro y usar UNIX bash, así que intentaré ser lo más preciso posible. Mientras busco en los archivos de registro, hago lo siguiente: proporciono el número de solicitud que se debe buscar y luego, opcionalmente, proporciono la acción como filtro secundario. Un comando típico se ve así:

fgrep '2064351200' example.log | fgrep 'action: example'

Esto está bien tratar con archivos más pequeños, pero con un archivo de registro de 5 gb, es insoportablemente lento. He leído en línea que es genial usar sed o awk para mejorar el rendimiento (o posiblemente incluso la combinación de ambos), pero no estoy seguro de cómo se logra esto. Por ejemplo, usando awk, tengo un comando típico:

awk '/2064351200/ {print}' example.log

ásicamente, mi objetivo final es poder imprimir / devolver los registros (o número de línea) que contienen las cadenas (podrían ser de hasta 4-5, y he leído que las tuberías son malas) para que coincidan en un archivo de registro de manera eficiente.

En una nota al margen, en bash shell, si quiero usar awk y hacer algún procesamiento, ¿cómo se logra eso? Por ejemplo

BEGIN { print "File\tOwner" }
{ print $8, "\t", \
$3}
END { print " - DONE -" }

Este es un script awk bastante simple, y supongo que hay una manera de poner esto en un comando bash de una sola línea. Pero no estoy seguro de cómo es la estructura.

Gracias de antemano por la ayuda. Salud

Respuestas a la pregunta(4)

Su respuesta a la pregunta