Processamento do arquivo de log [fechado]

0

Eu tenho um arquivo de log como este; Posso obter AGORA = HORA = date +'%H'

Eu posso obter o tempo de login em horas com algo como cat file | awk '{print $ 2}' | corte -d: -f1

Existe uma maneira de comparar os tempos de login em horas no arquivo com a hora atual e dizer se a hora de login é > 5 horas e exibir o registro que corresponde apenas a esse critério.

Digamos que as 15:00 horas são 15 horas, não gostaríamos de exibir abaixo, pois os tempos de login são inferiores a 5 horas

11:26:16 Login.Success yden8703 gkU3Qx4iiWPVMrV

12:26:24 Login.Success pxia9495 2OVvMrAmgRAOZyJ

    
por Johnb 25.05.2015 / 03:45

2 respostas

1

 awk -v argsec=$((5*60*60)) '
        BEGIN{ nowsec=systime() }
      { logsec=mktime(gensub(/[-:]/," ","g",$1" "$2));
        if(nowsec-logsec<=argsec) print;
      }' logfile

Você poderia colocar a conversão de 5 horas em segundos no bloco BEGIN do awk, mas parece mais flexível tê-lo em uma variável arg.

    
por 25.05.2015 / 05:54
0

Para obter as linhas de login de um arquivo de log que tenha uma hora maior que 05:00:00 na coluna 2, tente:

awk '$2+0>=5' logfile
    
por 25.05.2015 / 04:10

Tags