Tente isso. Esse script lê os arquivos listados na linha de comando ou na entrada padrão e imprime os valores server e qmgr para cada linha em que a data é 90 dias ou menos no futuro.
#!/bin/sh
# also works with ksh, bash, zsh
now=$(date +%s)
ninety_days=$(( 90 * 24 * 60 * 60 ))
cat "$@" |
while read server colon qmgr colon2 qdate
do
future=$(date +'%s' -d "$qdate")
if [ $((future - now)) -lt $ninety_days ]
then
echo "$server $colon $qmgr"
fi
done
Explicação:
Armazene o número de segundos entre "a época" (1970-01-01 UTC) e a hora atual na variável now
:
now=$(date +%s)
Calcule o número de segundos contidos em 90 dias:
ninety_days=$(( 90 * 24 * 60 * 60 ))
Converta a data que foi lida dos últimos 3 campos do registro no número de segundos entre a "época" e essa data. Armazene na variável future
(assim chamado por clareza ao comparar com a variável now
):
future=$(date +'%s' -d "$qdate")
Subtraia now
de future
para obter o número de segundos entre a data atual e a data no arquivo. Calculamos o número de segundos contidos em 90 dias, para que possamos comparar isso com a diferença entre future
e now
.
if [ $((future - now)) -lt $ninety_days ]