История изменений
Исправление Kroz, (текущая версия) :
Можно использовать awk, paste или while read для вычисления разницы между соседними значениями. Например:
Вариант с awk
last -x --time-format iso reboot | awk '
{ if (prev != "") print prev - $5; prev = $5 }'
Здесь prev хранит предыдущее время, и awk считает разницу.
Вариант с paste и awk
last -x --time-format iso reboot | awk '{print $5}' | paste -d ' ' - - | awk '{print $1, $2, $1 - $2}'
Этот вариант соединяет строки попарно (paste - -), после чего awk считает разницу.
Вариант с while read
prev=""
while read -r time; do
if [ -n "$prev" ]; then
echo "$(date -d "$prev" +%s) - $(date -d "$time" +%s)" | bc
fi
prev="$time"
done < <(last -x --time-format iso reboot | awk '{print $5}')
Этот скрипт переводит даты в секунды (date -d … +%s) и считает разницу с помощью bc.
Какой вариант тебе удобнее?
(С) ChatGPT
Исходная версия Kroz, :
Можно использовать awk, paste или while read для вычисления разницы между соседними значениями. Например:
Вариант с awk
last -x --time-format iso reboot | awk '
{ if (prev != "") print prev - $5; prev = $5 }'
Здесь prev хранит предыдущее время, и awk считает разницу.
Вариант с paste и awk
last -x --time-format iso reboot | awk '{print $5}' | paste -d ' ' - - | awk '{print $1, $2, $1 - $2}'
Этот вариант соединяет строки попарно (paste - -), после чего awk считает разницу.
Вариант с while read
prev=""
while read -r time; do
if [ -n "$prev" ]; then
echo "$(date -d "$prev" +%s) - $(date -d "$time" +%s)" | bc
fi
prev="$time"
done < <(last -x --time-format iso reboot | awk '{print $5}')
Этот скрипт переводит даты в секунды (date -d … +%s) и считает разницу с помощью bc.
Какой вариант тебе удобнее?
(С) ChatGPT