Expressão regular filtrar log horas [RESOLVIDO]

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

Monique
monique_silva7

(usa Red Hat)

Enviado em 14/10/2016 - 14:06h

Pessoal,

Gostaria da ajuda de vocês.

Tenho necessidade de filtrar as horas de um log das 00:00 as 23:59 para contagem das linhas. Tentei a expressão abaixo e não me retorna nada. Alguém poderia me ajudar?

cat log | egrep '^00:(0[0-9]|59):.*' | wc -l

Desde já agradeço


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 14/10/2016 - 14:54h

monique_silva7 escreveu:

Pessoal,

Gostaria da ajuda de vocês.

Tenho necessidade de filtrar as horas de um log das 00:00 as 23:59 para contagem das linhas. Tentei a expressão abaixo e não me retorna nada. Alguém poderia me ajudar?

cat log | egrep '^00:(0[0-9]|59):.*' | wc -l

Desde já agradeço


Boa tarde, Monique.
Segue:
egrep '((0|1)[0-9]|2[0-3]):[0-5][0-9]' log 

TESTE:
for H in {00..30}:{00..65};do
egrep '^((0|1)[0-9]|2[0-3]):[0-5][0-9]$' <<< "$H"; done|wc -l
1440

No teste acima, criei um "relógio", de 00:00 a 30:65 . . .
"Casou" corretamente (24*60)=1440

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


Att.:
Marcelo Oliver


3. RE: Expressão regular filtrar log horas

Savio Nascimento
saviounix

(usa Debian)

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

monique_silva7 escreveu:

Pessoal,

Gostaria da ajuda de vocês.

Tenho necessidade de filtrar as horas de um log das 00:00 as 23:59 para contagem das linhas. Tentei a expressão abaixo e não me retorna nada. Alguém poderia me ajudar?

cat log | egrep '^00:(0[0-9]|59):.*' | wc -l

Desde já agradeço


O comando descrito por MSOLIVER está correto, pois traz os dados de cada linha que possui o padrão de horário filtrado.

Mas para o problema em questão, acredito que sua intenção é informar a quantidade de ocorrências que atenderão ao padrão de horas criado.

Há duas maneiras de se obter tal resultado, sendo elas:


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


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

As duas alternativas, ambas aproveitando-se do código do nosso amigo MSOLIVER, retornam a quantidade de linhas.

A única diferença é que na primeira, a saída da instrução "egrep" foi associada ao programa "wc". Dessa forma um recurso e tempo extra são gastos sem necessidade, ainda que tal gasto não seja notável (mínimo).

Já a segunda instrução aproveita-se da expressão que o programa grep/egrep/fgrep possui ('-c'), que conta cada linha lida pelo programa enquanto o mesmo é executado.

Espero ter contribuído em algo para o tópico, ou mesmo para complemento do "post" criado pelo MSOLIVER.

Até mais ;D


4. Ótimas respostas

Monique
monique_silva7

(usa Red Hat)

Enviado em 15/10/2016 - 16:57h

Muito obrigado msoliver e saviounix ambos foi bem explicado e pena que não consigo dar melhor resposta aos dois.








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts