Respuestas:
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.
egrep "2014-12-04 (0[0-9]|1[0-6]|17:00:00)".
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,
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.
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.
: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.
egrepelimina los valores que comienzan con08o09(es decir, los tiempos entre08:00y09:59), y el segundo permite17:10,17:20,17:30, etc ..., para conseguir a través.