Как сортировать линии по плаванию №

Попробуйте следующее. Этот сценарий читает файлы, перечисленные в командной строке или стандартном вводе, и печатает значения сервера и qmgr для каждой строки, где дата указана на 90 дней или менее в будущем.

#!/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

Объяснение:

Сохраните количество секунд между "эпохой" (1970-01-01 UTC) и текущим временем в переменной now:

now=$(date +%s)

Вычислите количество секунд, содержащихся в 90 днях:

ninety_days=$(( 90 * 24 * 60 * 60 ))

Преобразуйте дату, считанную из последних 3 полей записи, в количество секунд между "эпохой" и этой датой. Сохраните в переменной future (названной так для ясности при сравнении с переменной now):

    future=$(date +'%s' -d "$qdate")

Вычтите now из future, чтобы получить количество секунд между текущей датой и датой в файле. Мы вычислили количество секунд, содержащихся в 90 днях, поэтому мы можем просто сравнить его с разницей между future и now.

    if [  $((future - now))  -lt  $ninety_days  ]
6
30.07.2018, 13:24
0 ответов

Теги

Похожие вопросы