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:00
hasta (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 -n
es suprimir la acción predeterminada de imprimir cada línea.
Dec 5 11:00
y Dec 5 12:00
, ¿no? Si Dec 5 10:59
es seguido inmediatamente Dec 5 11:01
, entonces sed
no sabrá por dónde empezar. Y si hay un Dec 5 11:00
, pero luego Dec 5 11:59
lo sigue Dec 5 12:01
, sed
no sabré dónde parar.
:00
parte, 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.
egrep
elimina los valores que comienzan con08
o09
(es decir, los tiempos entre08:00
y09:59
), y el segundo permite17:10
,17:20
,17:30
, etc ..., para conseguir a través.