Postagem em destaque

Criando bot do Telegram em Shell script com ShellBot

egrep - Mascarando data e hora

Lidar com arquivos de log com milhares de linhas não é uma tarefa fácil, principalmente quando se precisa de linhas especificas com dados dinâmicos, como por exemplo; data e hora. Para isso devemos criar uma máscara, capaz de buscar cadeias de caracteres que se enquadrarem ao padrão procurado.

Montei algumas máscaras utilizando expressões regulares:

Hora

Formato: 12 horas

Máscara: HH:MM
 egrep "\b(0[1-9]|1[0-2]):([0-5][0-9])\b"

# Máscara: HH:MM:SS
egrep "\b(0[1-9]|1[0-2]):([0-5][0-9]):([0-5][0-9])\b"

Formato: 24 horas

# Máscara: HH:MM
egrep "\b([01][0-9]|2[0-3]):([0-5][0-9])\b"

# Máscara: HH:MM:SS
egrep "\b([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])\b"

Data

# Máscara: DD/MM/AA
egrep "\b(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[0-2])/([0-9]{2})\b"

# Máscara: DD/MM/AAAA
egrep "\b(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[0-2])/([0-9]{4})\b"

# Máscara: DIA_SEMANA, DIA_MES de MES de ANO
egrep '\b([Ss]egunda|[Tt]erça|[Qq]uarta|[Qq]uinta|[Ss]exta|[Ss]ábado|[Dd]omingo),\s(0[1-9]|[12][0-9]|3[01])\s[dD]e\s([Jj]aneiro|[Ff]evereiro|[Mm]arço|[Aa]bril|[Mm]aio|[Jj]unho|[Jj]ulho|[Aa]gosto|[Ss]etembro|[Oo]utubro|[Nn]ovembro|[Dd]ezembro)\sde\s[0-9]{4}\b'

Somente as linhas com as expressões completas serão validadas.


Exemplo:

Usando a máscara HH:MM no formato 12 horas.

egrep "\b(0[1-9]|1[0-2]):([0-5][0-9])\b"

Linhas:

13:00 - falso
12:55 - verdadeiro
são 12:55 hora do almoço - verdadeiro
12:55#almoço - falso
hora,12:55 - falso

Para que máscara seja válida em qualquer posição da expressão, remova o meta caractere de borda '\b', tanto no inicio, quanto do final da expressão regular.

A mesma máscara sem o '\b'

egrep "(0[1-9]|1[0-2]):([0-5][0-9])"

Linhas:

13:00 - falso
12:55 - verdadeiro
são 12:55 hora do almoço - verdadeiro
12:55#almoço - verdadeiro
hora,12:55 - verdadeiro

Somente a linha '13:00' não foi validada, porque não se enquadra no formato 12 horas da máscara.

Comentários

Contato

Nome

E-mail *

Mensagem *