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.