Ubuntu 16.04.1 :Почему некоторые программы запускаются обеими системами: systemd и initV?

Это проблема, с которой вы сталкиваетесь :, когда 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
1
03.04.2017, 08:45
1 ответ

Как отмечает jordanm, это унаследовано от Debian, где поддерживаются разные системы инициализации. Мало того, вы можете изменить свою систему инициализации без переустановки и ожидать, что ваша конфигурация сохранится, включая то, какие службы включены или отключены. Вот почему настройки systemd и sysvinit синхронизированы. (Обратите внимание, что по крайней мере некоторые из используемых функций предоставляются вышестоящим systemd и не относятся к Debian или Ubuntu.)

2
27.01.2020, 23:34

Теги

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