grep em data menor que hoje [RESOLVIDO]

1. grep em data menor que hoje [RESOLVIDO]

Eduardo Campos
3dUcP

(usa Manjaro Linux)

Enviado em 02/04/2017 - 13:36h

Olá pessoal.
Tenho uma lista de dados, cada dado é separado por um delimitador

usuario:senha:validade(dia/mes)

Suponhamos que no banco de dados esteja assim

usuario1:senha:10/04
usuario2:senha:12/05
usuario3:senha:25/03

O usuario3 tem validade de 25/03, ou seja, ele expirou.
Preciso separa-lo, como posso fazer isso?
A ideia é, que os usuarios não expirados (usuario1 e usuario2) sejam printados com a cor verde e os usuarios expirados na cor cinza.

Minha dificuldade é separar o que está expirado.

expirado=$(grep -E *:*:<$HOJEDIA/=<$HOJEMES dbdeusuarios) 

(isso é um exemplo doque quero)


  


2. Re: grep em data menor que hoje [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 02/04/2017 - 17:31h

3dUcP escreveu:

Olá pessoal.
Tenho uma lista de dados, cada dado é separado por um delimitador

usuario:senha:validade(dia/mes)

Suponhamos que no banco de dados esteja assim

usuario1:senha:10/04
usuario2:senha:12/05
usuario3:senha:25/03

O usuario3 tem validade de 25/03, ou seja, ele expirou.
Preciso separa-lo, como posso fazer isso?
A ideia é, que os usuarios não expirados (usuario1 e usuario2) sejam printados com a cor verde e os usuarios expirados na cor cinza.

Minha dificuldade é separar o que está expirado.

expirado=$(grep -E *:*:<$HOJEDIA/=<$HOJEMES dbdeusuarios) 

(isso é um exemplo doque quero)


Boa tarde 3dUcP.
No momento estou sem o pinguim . . . portanto não é possível testar . . .
Segue a sugestão:
Leia o arquivo linha a linha,
"Pegue" o terceiro campo e converta p/ o "dia do ano", exemplo:
date -d"2017-04-10" +%j
Compare com o "dia do ano hoje"
DANO_HOJE=$(date +%j)
Se expirou, deleta da lista .. . Use o sed . . .

Segue rascunho, como disse.... impossibilitado de testar . . . .
HOJE=$(date +%j)
ANO="2017"
while read -r line;do
DATA=$(cut -d":" -f3 <<< "$line")
DIA=$(cut -d"/" -f1 <<< "$DATA")
MES=$(cut -d"/" -f2 <<< "$DATA")
DANO=$(date -d"$ANO-$MES-$DIA" +%j)
((HOJE > DANO)) && sed -i "/$05/10/2005$/d" dbdeusuarios #SE $HOJE É MAIO QUE $DANO, DELETA A LINHA QUE TERMINA COM $DATA
done < dbdeusuarios

É isso . . .
Qquer erro, posta ai, chegando em casa eu testo...

Att.:
Marcelo Oliver.







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts