Expressão regular filtrar log horas [RESOLVIDO]

1. Expressão regular filtrar log horas [RESOLVIDO]

Monique
monique_silva7

(usa Red Hat)

Enviado em 21/10/2016 - 22:41h

Pessoal

Postei em outro tópico "Expressão regular filtrar log horas " onde me orientaram a utilizar a expressão abaixo para filtrar meu log por horário das 00:00 as 23:59. Porém, apareceu uma necessidade, onde, nesse log, apresenta data do dia anterior, e minha necessidade é fechar o log apenas de um dia completo. Como eu poderia fazer isso?

Vejam a expressão que me passaram e que funciona, porém, preciso do dia atual

egrep '((0|1)[0-9]|2[0-3]):[0-5][0-9]' ssl_log | wc -l

egrep '((0|1)[0-9]|2[0-3]):[0-5][0-9]' ssl_access_log -c

Desde já agradeço


  


2. Re: Expressão regular filtrar log horas [RESOLVIDO]

Monique
monique_silva7

(usa Red Hat)

Enviado em 21/10/2016 - 23:26h

Pessoal

Eu fiz assim mas não cheguei no meu objetivo, vejam;

Objetivo: Filtrar o dia anterior no horário das 00:00 as 23:59

{
#pega o dia anterior e joga na variavel
DATA=$(date --date="1 days ago" | cut -d: -f1 | awk '{print $3}')

# pega o valor da data e filtra o horario, por fim conta as linhas
egrep "$DATA" '((0|1)[0-9]|2[0-3]):[0-5][0-9]' log | wc -l

}


Alguém pode me ajudar?


3. Re: Expressão regular filtrar log horas

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 22/10/2016 - 12:13h

monique_silva7 escreveu:

Pessoal
Eu fiz assim mas não cheguei no meu objetivo, vejam;
Objetivo: Filtrar o dia anterior no horário das 00:00 as 23:59
{
#pega o dia anterior e joga na variavel
DATA=$(date --date="1 days ago" | cut -d: -f1 | awk '{print $3}')
# pega o valor da data e filtra o horario, por fim conta as linhas
egrep "$DATA" '((0|1)[0-9]|2[0-3]):[0-5][0-9]' log | wc -l
}
Alguém pode me ajudar?

======================================================================
Boa tarde Monique.
Considerando que data e hora estejam no seguinte formato:
2016-10-21 00:00:00
Faça:
DA=$(date -d"-1 day" +%Y-%m-%d) #DIA ANTERIOR
egrep -c "[-]$DA ((0|1)[0-9]|2[0-3]):([0-5][0-9]:?){2}" DATA_LOG.txt
1440

Onde,
for H in {21..22}" "{00..23}:{00..59}:{00..59};do echo "2016-10-$H" >> DATA_LOG.txt;done 

Se a resposta foi ESCLARECEDORA, MARQUE-A como A MELHOR,
Dessa forma, ganho uns pontos no fórum . . .


OBS.: Se não funcionar, poste uma linha do LOG

att.:
Marcelo Oliver



4. Re: Expressão regular filtrar log horas [RESOLVIDO]

Monique
monique_silva7

(usa Red Hat)

Enviado em 22/10/2016 - 13:08h

Olá Oliver

Veja, ele não retornou o número de linhas

[root@monique]# bash -x access.sh
++ date '-d-1 day' +%Y-%m-%d
+ DA=2016-10-21
+ egrep -c '[-]2016-10-21 ((0|1)[0-9]|2[0-3]):([0-5][0-9]:?){2}' access_log
+ wc -l
1

Desde já obrigado


5. Re: Expressão regular filtrar log horas [RESOLVIDO]

Monique
monique_silva7

(usa Red Hat)

Enviado em 22/10/2016 - 13:13h

Oliver,

Acho que é por causa do formato da data.

No meu log aparece assim;

[22/Oct/2016:13:01:00 -0200]

Obrigado


6. Re: Expressão regular filtrar log horas

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 22/10/2016 - 14:07h

monique_silva7 escreveu:

Oliver,
Acho que é por causa do formato da data.
No meu log aparece assim;
[22/Oct/2016:13:01:00 -0200]
Obrigado

=================================================
Monique, boa tarde.
Se a SAíDA do comando: date -d"-1 day" +%d/%b/%Y é:
21/Out/2016
Altere "DA" para:
DA=$(date -d"-1 day" +%d/%b/%Y|sed -r 's/[A-Z]+/.+/I')

Se a saída for:
22/Oct/2016
Altere "DA" para:
DA=$(date -d"-1 day" +%d/%b/%Y)

A NOVA REGEX É:
egrep -c "$DA:((0|1)[0-9]|2[0-3]):([0-5][0-9]:?){2} -[0-9]{4}$"
OBS.: NãO é NECESSáRIO colocar o "|wc -l" para CONTAR as LINHAS.


att.:
marcelo oliver


7. Re: Expressão regular filtrar log horas [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 24/10/2016 - 23:21h

monique_silva7 escreveu:

Olá Oliver

Veja, ele não retornou o número de linhas

[root@monique]# bash -x access.sh
++ date '-d-1 day' +%Y-%m-%d
+ DA=2016-10-21
+ egrep -c '[-]2016-10-21 ((0|1)[0-9]|2[0-3]):([0-5][0-9]:?){2}' access_log
+ wc -l
1
Desde já obrigado

=================================================================
Monique, não é necessário usar o |wc -l
O "egrep -c" "CONTA" o Nº de ocorrências.

MSO



8. Re: Expressão regular filtrar log horas [RESOLVIDO]

Monique
monique_silva7

(usa Red Hat)

Enviado em 25/10/2016 - 16:11h

Obrigado,

Deu certo.







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts