Как я могу отфильтровать журнал только для строк в два раза?

Я работаю в Unix.

Я хотел бы получить информацию из журнала в указанном временном диапазоне для текущей даты. Например, я хочу, чтобы данные из файла журнала с сегодняшней даты были с 00:00 до 09:00.

Пример записи в журнале:

13/10/16 14:45:02 <batchspeedchange> <BELLBD.BD77350A.G6987V00> <> FAILED FILE FORMAT VALIDATION - ERROR:-213:rawData cannot contain tokens 

Как получить выход из такого файла журнала?

  • Как я могу отсортировать этот массив чисел?
  • Что означает «</ dev / null»?
  • Ничего не делать в сценарии bash
  • выбрать файл под каталогом?
  • Создание заголовков Virtualbox Linux
  • Как определить аналогичную функцию bash сразу
  • Как избежать специальных символов в строке?
  • BASH: запустить фоновый процесс и проверить, когда он заканчивается
  • 2 Solutions collect form web for “Как я могу отфильтровать журнал только для строк в два раза?”

    Предполагая, что даты выглядят как «HH: MM», как вы показывали, и если предположить, что дата отображается во втором поле, вы можете использовать awk:

     awk -v start=00:00 -v stop=09:00 'start <= $2 && $2 < stop' file.log 

    [rant] Я довольно подробно отношусь к форматированию даты, и это ужасно: какая дата «09/10/11»? [/ Напыщенная]

    В любом случае, предполагая, что это «YY / MM / DD»,

     awk -v date="$(date +%y/%m/%d)" \ -v start=00:00:00 \ -v stop=09:00:00 \ -v search="File format not found" \ '$1 == date && start <= $2 && $2 < stop && $0 ~ search' file.log 

    Предполагая, что строки в файле журнала находятся в хронологическом порядке и что в 00:00 и 00:09 есть событие:

    awk '/^13\/10\/16 00:00/,/^13\/10\/16 09:00/ {print}' file.log

    Я считаю, что это легко запомнить и отличное средство при исследовании журналов. Эти предположения слишком широки для использования в производстве.

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