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

У меня есть файл журнала и вы хотите его разрезать на копии в 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: слишком длинная ошибка списка аргументов
  • Извлечение с помощью grep / sed первого шаблона, а затем второго шаблона, который имел некоторые строки до и связанные с первым
  • awk: Столбцы не печатаются, когда конкатенация строк передается как командная строка
  • Вывести некоторые разделы текстового файла
  • Вставить многострочный текст перед первой соответствующей строкой в ​​файле
  • Как добавить добавочный счет в каждую строку текстового файла?
  • Измените определенную часть файла с помощью сценария оболочки
  • Добавить строку, используя Sed на удаленной системе
  • Как изменить специальный символ в linux с помощью переменной
  • Подсчитайте все строки между разделителем
  • Вырезать файл, ограниченный числом с одной или несколькими цифрами
  • Linux и Unix - лучшая ОС в мире.