Как использовать awk для чтения данных между всеми частыми временными интервалами

У меня есть файл журнала в следующем формате

[30/Jan/2015:10:10:30 +0000] 12.30.30.204 xff=- reqId=[-] status_check len=- GET /api/getstatus HTTP/1.1 mi=- ec=- 200 425 [30/Jan/2015:10:11:00 +0000] 12.30.30.204 xff=- reqId=[-] status_check len=- GET /api/getstatus HTTP/1.1 mi=- ec=- 200 261 [30/Jan/2015:10:11:29 +0000] 12.30.30.204 xff=- reqId=[-] status_check len=- GET /api/getstatus HTTP/1.1 mi=- ec=- 200 232 [30/Jan/2015:10:12:00 +0000] 12.30.30.204 xff=- reqId=[-] status_check len=- GET /api/getstatus HTTP/1.1 mi=- ec=- 200 315 [30/Jan/2015:10:12:29 +0000] 12.30.30.204 xff=- reqId=[-] status_check len=- GET /api/getstatus HTTP/1.1 mi=- ec=- 200 221 [30/Jan/2015:10:12:57 +0000] 12.30.30.182 xff=- reqId=[-] status_check len=- GET /api/getstatus HTTP/1.1 mi=- ec=- 200 218 

Каждая строка в этом файле журнала имеет время отклика в последнем поле и имеет отметку времени в первом поле. Есть ли способ в awk прочитать среднее время отклика за все определенные промежутки времени? Например, вычисление времени отклика avg каждые пять минут.

Я пробовал следующий способ, который статический способ сделать это и даст только среднее значение одного временного интервала.

 $ grep "30/Jan/2015:10:1[0-4]" mylog.log | awk '{resp+=$NF;cnt++;}END{print "Avg:"int(resp/cnt)}' 

Но мне нужно сделать это для всего файла за все 5 минут. Даже если я зациклирую команду, как я могу динамически передать дату в команду? Поскольку файл журнала изменяется каждый раз и даты в нем.

Или есть лучший альтернативный способ сделать это, кроме awk ? Пожалуйста, предложите.

One Solution collect form web for “Как использовать awk для чтения данных между всеми частыми временными интервалами”

Вначале это может быть:

 awk -F"[][ ]*" -v it=300 '{ sub(":"," ",$2) gsub("/"," ",$2) "date +%s -d \""$2"\""|getline d if (df>it) { f=d if (NR!=1) print s/ns=n="" } n++ s+=$NF }' log.file 
  • -F"[][ ]*" используется как F ields S eparator для разметки квадратных скобок дополнительно
  • -v it=300 заданная переменная (интервал в секундах)
  • sub,gsub удаляет символы из поля, чтобы подготовить его к формату команды date
  • date преобразовать поле во второе (из EPOCH)
  • |getline d помещается выше в переменную d
  • rsync и резервное копирование и изменение часового пояса
  • Как я могу хранить mtime файлов и каталогов, когда я использую rsync или cp? Для использования в резервном / инкрементальном резервном копировании
  • Преобразовать временную метку unix в hh: mm: ss: SSS (где SSS - миллисекунды) в AWK
  • Странное форматирование даты в сценарии bash
  • Какой может быть вариант изменения измененного времени файла в будущем?
  • Почему ls -lrth и ls -ltch дают разные результаты
  • Как скопировать 5 новейших файлов из одного каталога в другой и удалить старые копии
  • Задача Cron для удаления файлов старше 3 дней
  • Возможно ли обновлять измененные времена только без копирования файлов при использовании rsync?
  • Время, оставшееся для следующего прогона
  • Заменить символ алфавитом в зависимости от позиции в строке
  • Interesting Posts

    почему пользователь может записывать cd в каталог

    Выполнение 'ssh-add -D' из задания cron не работает

    Возможно одновременное использование скобок (перестановки) и расширения массива?

    смотреть случайно упорядоченные видео в одном экземпляре mpv

    Использование ресурсов в x-forwarding

    Переименование нескольких файлов, скрипт Bash, желательно с добавлением

    log rotate, почему создание нового журнала называется журналом rotate вместо log delete или log refresh

    Измените размер существующего раздела LVM и добавьте пространство в другой раздел LVM

    После обновления сенсорная панель Synaptics дает летаргический указатель

    настроить exim для пересылки электронной почты системы (снаружи), на сервере с динамическим ip, за маршрутизатором DNS

    Как проверить, включен ли ARP или нет

    Почему добавление IPv6-адреса прерывает IPv6 (CentOS)?

    Невозможно изменить имя пользователя («пользователь <olduser> в настоящее время используется процессом <number>»)

    Можно ли рассматривать проект GNU как дистрибутив Linux?

    Заблокировать Parted Magic?

    Linux и Unix - лучшая ОС в мире.