Это проблема, с которой вы сталкиваетесь :, когда FS=" :", ваше первое поле — "1. Track 01 05", и когда вы используете эту строку в арифметическом контексте, первое не -цифра усекает число, поэтому значение минут равно «1». Вам нужно использовать пробел или двоеточие в качестве разделителя полей, но тогда любой завершающий пробел означает, что у вас есть лишние пустые поля.
Я бы сделал
awk '
BEGIN {h = m = s = 0}
function add_time(min, sec) {
s += sec
m += min
while (s >= 60) {s -= 60; m++}
while (m >= 60) {m -= 60; h++}
}
{
split($NF, t, /:/)
add_time(t[1], t[2])
printf "%d:%02d:%02d\n", h, m, s
}
' file
Как отмечает jordanm, это унаследовано от Debian, где поддерживаются разные системы инициализации. Мало того, вы можете изменить свою систему инициализации без переустановки и ожидать, что ваша конфигурация сохранится, включая то, какие службы включены или отключены. Вот почему настройки systemd и sysvinit
синхронизированы. (Обратите внимание, что по крайней мере некоторые из используемых функций предоставляются вышестоящим systemd и не относятся к Debian или Ubuntu.)