Разделить файл журнала по временному диапазону

У меня есть файл журнала и вы хотите его разрезать на копии в 15 минут. В файле журнала строки начинаются с:

dd mmm yyyy hh:mm:ss,xxx 

например

 12 Feb 2013 16:05:02,xxx log text... 

и файл вращается каждый час, поэтому я хотел бы взять копию файла журнала, разделить его на 15 минут регистрации и сказать 4 файла журнала.

2 Solutions collect form web for “Разделить файл журнала по временному диапазону”

AWK:

 cat input | awk -F ':' '{if ($2 < 15) {print $0 > "15.log"} else print}' | awk -F ':' '{if ($2 < 30) {print $0 > "30.log"} else print}' | awk -F ':' '{if ($2 < 45) {print $0 > "45.log"} else print}' | cat > 60.log 

Если строки все правильно отформатированы, то

 awk -F: '{print >int($2/15)*15 ".log"}' inputfile 

будет выдавать файлы 0.log, 15.log, 30.log и 45.log.

Он работает путем расщепления с использованием двоеточия в качестве разделителя, поэтому второе поле dd mm yyyy hh:mm:ss,xxx равно mm . Мы разделим это на 15, возьмем целочисленную часть и умножим на 15, чтобы получить значение mm в начале четверти часа. Затем мы добавляем строку ".log" . Затем мы укажем awk для печати текущей строки в этот файл.

  • sed code для обработки текста
  • Как извлечь номер из строки
  • Проблема с передачей переменной sed
  • Заменить строку M в файле1 на строку N в файле2
  • Использование sed для удаления разделителей цифр, заключенных в кавычки и кавычки из CSV?
  • Как разместить данные, ограниченные скобками, в одной строке?
  • Как обеспечить, чтобы строка, интерполированная в подстановку sed, избегала всех метамарков
  • sed + добавить последнее слово для каждой строки, только если слово не отображается
  • Переименуйте имена файлов MP3 в шаблон
  • Используйте SED или AWK для перемещения строки в новый столбец и строку
  • что считаются старыми и мощными командами?
  • Linux и Unix - лучшая ОС в мире.