Звук воспроизводится слишком быстро на lubuntu 13.10

Мы можем сделать это полностью использование только awk:

awk -F, 'BEGIN{print"\"Time Interval\",\"Count of Sources\""}NR>1{gsub(/"/,"",$2);h=int($2/10000)*10000;m=int(($2-h)/3000)*3000;ctr[h+m]++}END{n=asorti(ctr,idx);for(i=1;i<=n;i++){print "\""idx[i]"\",\""ctr[idx[i]]"\""}}' fb.csv

Для Вашего данного входного файла fb.csv это приводит к выводу

"120000","4"
"123000","7"
"130000","8"
"133000","5"
"140000","7"

Важный: Это требует, чтобы GNU AWK (gawk) работал, потому что он использует эти asorti(...) функция для сортировки ассоциативных массивов их индексами. Это не работает с mawk. Можно узнать значение по умолчанию awk версия с использованием awk -Wv.

Объяснение команды:

Мы работаем awk как это сюда, устанавливая разделителя полей, который разграничивает столбцы к [1 112] и использование файла fb.csv, как введено:

awk -F, '' fb.csv

awk управляют (заполнитель выше) это, после надлежащего форматирования:

BEGIN {
    print "\"Time Interval\",\"Count of Sources\""
}
NR>1 {
    gsub(/"/, "", $2)
    h = int($2 / 10000) * 10000
    m = int(($2-h) / 3000) * 3000
    ctr[h+m]++
}
END {
    n = asorti(ctr, idx)
    for(i=1; i<=n; i++) {
        print "\"" idx[i] "\",\"" ctr[idx[i]] "\""
    }
}

Это выглядит ужасно сложным (и я не могу отклонить это, требуется некоторая мысль для понимания), таким образом, я попытаюсь разбить его немного:

BEGIN { ... } блок кода будет выполняться однажды, первая строка входа из файла читается. Затем для каждого, но первой строки ("номер строки, больше, чем 1"), NR>1 { ... } выполняется блок. Наконец после того, как весь вход читается, END { ... }, блок будет работать.

  • Теперь BEGIN блок довольно прост, он только печатает новую строку заголовка CSV.

  • Позволяют нам посмотреть NR>1 блок. Помните, что awk разделения каждая строка в поля, которые были разделены разделителем полей (тот мы устанавливаем на [1 122] использование -F аргумент). Первый столбец/поле будет сохранен в переменной $1, второе в [1 125] и так далее. Мы только интересуемся значением второго поля, которое содержит время.

    Используя эти gsub(, , ) функция, мы заменяем все случаи [1 127] (регулярное выражение, включенное в наклонные черты, здесь она просто соответствует только кавычкам) с (пустой, поскольку мы хотим удалить их), строка в [1 129] ($2 т.е. второй зарегистрированный, содержащий время здесь).

    Следующий мы декодируем метку времени в целые целые часы h (умноженный с 10 000) и целое полчаса m (без целых часов; умноженный с 3 000). Мы используем ассоциативный массив ctr в качестве счетчика того, как часто округленная метка времени h+m происходит во входе.

  • Наконец в END блок, мы распечатываем значения счетчика , отсортировал по округленным индексам метки времени.

0
задан 17.04.2020, 04:41

1 ответ

Попробуйте sudo sed -i 's/load-module module-udev-detect/load-module module-udev-detect use_ucm=0 tsched=0/g' /etc/pulse/default.pa; pulseaudio -k

0
ответ дан 17.04.2020, 04:42
  • 1
    PulseAudio является главным PIA; I' m не уверенный, почему Ubuntu doesn' t поставлются с этими опциями как значение по умолчанию, так как оно фиксирует почти все проблемы аудио большинство людей отчет. – Jeff Mattson 17.04.2020, 04:42

Теги

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