Unix Comando para grep um intervalo de tempo

1

Eu tenho um arquivo de log, salvo com uma data específica. Quero buscar entradas de log durante um determinado período e intervalo de datas para outro arquivo.

Ex: todas as entradas de 2014-12-04 00:00:00 time to 2014-12-04 17:00:00

    
por gaurav 05.12.2014 / 16:18

3 respostas

2

Tente 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>

O padrão egrep contém três partes. A primeira parte pega tudo de 00:00:00 a 09:59:59. A segunda parte pega tudo das 10:00:00 às 16:59:59, e a terceira parte pega as 17:00:00.

    
por 05.12.2014 / 17:16
0

Se você quiser um intervalo de 4 minutos de registros,

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

retornará todas as linhas de registros entre 16:35 e 16:39 em 01 / abr / 2014.

Suponha que você precise dos últimos 5 dias a partir de 17 / set / 2014, você pode usar o seguinte:

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

Espera que isso ajude,

    
por 05.12.2014 / 16:26
0

Você pode selecionar uma linha de partida e uma linha final com, por exemplo, sed :

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

Isso imprimirá todas as linhas da primeira linha com Dec 5 11:00 até (e incluindo) a primeira linha com Dec 5 12:00 . Isto está assumindo que o log é sequencial no tempo (ou seja, todas as linhas estão na ordem do tempo). O -n é para suprimir a ação padrão de imprimir cada linha.

    
por 05.12.2014 / 16:35