Comando Unix para grep un rango de tiempo

1

Tengo un archivo de registro, guardado con una fecha particular. Quiero recuperar entradas de registro durante un intervalo de tiempo y fecha particular a otro archivo.

Ej: todas las entradas desde el 2014-12-04 00:00:00 hora hasta el 2014-12-04 17:00:00

gaurav
fuente

Respuestas:

2

Prueba egrep:

pttrn="2014-12-04 0[0-9]"
pttrn="${pttrn}|2014-12-04 1[0-6]"
pttrn="${pttrn}|2014-12-04 17:00:00"

egrep "${pttrn}" <logfile>

El patrón egrep contiene tres partes. La primera parte toma todo de 00:00:00 a 09:59:59. La segunda parte toma todo de 10:00:00 a 16:59:59, y la tercera parte toma 17:00:00.

Daniel Goldfarb
fuente
Su primera egrepelimina los valores que comienzan con 08o 09(es decir, los tiempos entre 08:00y 09:59), y el segundo permite 17:10, 17:20, 17:30, etc ..., para conseguir a través.
G-Man
@ G-Man Gracias. Tienes razón. Creo que ya lo arreglé.
Daniel Goldfarb
Parece que debería funcionar. Se podría simplificar a egrep "2014-12-04 (0[0-9]|1[0-6]|17:00:00)".
G-Man
0

Si desea un intervalo de registros de 4 minutos,

grep "01/APR/2014:16:3[5-9]" logfile

devolverá todas las líneas de registro entre las 16:35 y las 16:39 el 01 / abr / 2014.

Supongamos que necesita los últimos 5 días a partir del 17 / Sep / 2014, puede usar lo siguiente:

grep "1[3-7]/Sep/2011" logfile

Espero que esto ayude,

vembutech
fuente
0

Puede seleccionar una línea de inicio y una línea final con, por ejemplo sed:

sed -n '/Dec  5 11:00/,/Dec  5 12:00/p' /var/log/daemon.log

Esto imprimirá todas las líneas desde la primera línea con Dec 5 11:00hasta (e incluyendo) la primera línea con Dec 5 12:00. Esto supone que el registro es secuencial en el tiempo (es decir, todas las líneas están en orden de tiempo). El -nes suprimir la acción predeterminada de imprimir cada línea.

wurtel
fuente
Pero esto supone que hay entradas para Dec 5 11:00y Dec 5 12:00, ¿no? Si Dec 5 10:59es seguido inmediatamente Dec 5 11:01, entonces sedno sabrá por dónde empezar. Y si hay un Dec 5 11:00, pero luego Dec 5 11:59lo sigue Dec 5 12:01, sedno sabré dónde parar.
G-Man
1
Cierto; podría omitir la :00parte, pero de nuevo tendría que haber al menos una línea de registro por hora. Personalmente, adaptaría el script para que se ajuste a los datos; tal vez incluso aplicar algo de perl foo.
wurtel