Я пришел к этому, если я вас правильно понял, и взяв за пример ответ @Kunasalanda:
This is using bash (or compatible shell) and GNU date. It would fall over on e.g. macOS (non-GNU date).
today=$(date -d $(date +'%Y-%m-%d') +%s)
while read i; do
[[ -z "$i" ]] && continue
date_format=$(echo "$i" | awk -F'.' -vOFS='-' '{print $3,$2,$1}')
convert_date=$(date -d "$date_format" +%s)
if [[ "$convert_date" -ge "$today" ]]; then
expires=$(( ("$convert_date"- "$today")/86400 ))
[[ ! "$expires" -gt 10 ]] && echo $i expires in $expires days
fi
done < file
Выход:
14.08.2019 expires in 0 days
18.08.2019 expires in 4 days
20.08.2019 expires in 6 days
Игнорировать пустые строки
[[ -z "$i" ]] && continue
Отформатируйте от dd.mm.yy
до yyyy-mm-dd
для выполнения операций
date_format=$(echo "$i" | awk -F'.' -vOFS='-' '{print $3,$2,$1}')
Преобразование даты в секунды
convert_date=$(date -d "$date_format" +%s)
Выбирайте только те даты, которые старше сегодняшнего дня
if [[ "$convert_date" -ge "$today" ]]; then
Получить количество дней, в течение которых истечет указанная дата
expires=$(( ("$convert_date"- "$today")/86400 ))
Вывод, только если срок действия не превышает 10 дней
[[ ! "$expires" -gt 10 ]] && echo "$i" expires in "$expires" days