es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Archivos zgrep en orden ascendente.

Quiero extraer información de los registros de Linux que están comprimidos en archivos numerados desde file.gz hasta file.50.gz. Luego, el primer archivo de registro que zgrep revisa es log.1.gz, luego log.10.gz, luego log.11.gz, etc. Pero esto afecta la cronología de los eventos. ¿Hay alguna manera de:
a) hacer que zgrep revise en orden natural ascendente? o
b) ordenar las coincidencias según la fecha (cada línea en los registros sigue este patrón de fecha yyyy/mm/dd-hh:mm:ss.mss p.ej: 2021/10/12-08: 27:33.166324)

-> Como estos registros se extraen para funcionar sin conexión y luego se procesan en una máquina con Windows (wsl), la fecha / hora de última modificación de estos archivos es la misma para todos ellos.

Estaba intentando cosas como esta pero sin suerte (de todos modos, creo que solo consideraría la fecha de 10 dígitos, dejando de lado la marca de tiempo):

zgrep -ih error log.* | sort -n -t "-" -k1.7,1.10 -k1.1,1.2 -k1.4,1.5

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Una posible solución a este problema es usar la opción ‘-v’ (clasificación por versión) al usar zgrep para buscar a través de los archivos de registro comprimidos. Esto hará que zgrep ordene los nombres de archivo en orden natural ascendente, lo que debería ayudar con la cronología de los eventos. El comando para hacer esto se vería así:

    “`zgrep -v -ih error log.*“““`

    Otra solución sería usar el comando ‘find’ con la opción ‘exec’ para buscar a través de los archivos de registro comprimidos en orden y luego ordenar las coincidencias de acuerdo con el patrón de fecha. El comando para hacer esto se vería algo así:

    find . -name "log.*.gz" -exec zcat {} \; | grep -i error | sort -n -t"-" -k1.1,1.10

    Este comando primero usará el comando ‘find’ para buscar a través del directorio actual y encontrar todos los archivos que coincidan con el patrón ‘log.*.gz’. Los resultados de esta búsqueda luego serán procesados ​​por la opción ‘exec’, que llama a ‘zcat’ para descomprimir los archivos y enviar los resultados a ‘grep’ para buscar errores. Los resultados del comando ‘grep’ luego se ordenarán de acuerdo con el patrón de fecha usando el comando ‘sort’.

    ¡Espero que esto ayude! Avíseme si tiene alguna pregunta adicional.

Comments are closed.