LINUX.ORG.RU

История изменений

Исправление 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