Отфильтровать файл журнала по месяцам, дате и времени в bash

Я хотел бы получить данные с Apr 24 10:00:00.000000 и Apr 25 24:00:00.999999 в следующем журнале, но я не уверен, как получить эту работу:

 files/file1:Apr 22 02:47:00.663117 somedata files/file1:Apr 23 04:47:00.663127 somedata files/file1:Apr 24 05:47:00.663137 somedata files/file1:Apr 24 10:47:00.663137 somedata files/file1:Apr 25 01:47:00.663147 somedata files/file1:Apr 25 23:47:00.663157 somedata files/file1:Apr 25 23:47:00.663167 somedata files/file1:Apr 26 23:47:00.663177 somedata 

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

 awk -v start=10:00:00.000000 -v stop=24:00:00.999999 'start <= $3 && $3 <= stop' 

Я бы хотел получить только следующие данные:

 files/file1:Apr 24 10:47:00.663137 somedata files/file1:Apr 25 01:47:00.663147 somedata files/file1:Apr 25 23:47:00.663157 somedata files/file1:Apr 25 23:47:00.663167 somedata 

Кто-нибудь может помочь с этим? Кроме того, было бы очень полезно учитывать месяц, а также фильтрацию

One Solution collect form web for “Отфильтровать файл журнала по месяцам, дате и времени в bash”

Вы можете просто добавить больше переменных для фильтра дня:

 awk -v start_day=24 -v stop_day=25 -v start_time=10:00:00.000000 -v stop_time=24:00:00.999999 'start_day <= $2 && $2 <= stop_day && start_time <= $3 && $3 <= stop_time' file 

доходность

 files/file1:Apr 24 10:47:00.663137 somedata files/file1:Apr 25 23:47:00.663157 somedata files/file1:Apr 25 23:47:00.663167 somedata 

нам не хватает строки за 25 апреля, потому что мы слепо фильтруем время до 10 утра. Все, что нам нужно сделать, это реализовать логический тест для фильтрации времени только в течение первого дня:

 awk -v start_day=24 -v stop_day=25 -v start_time=05:00:00.000000 -v stop_time=05:00:00.999999 'start_day <= $2 && $2 <= stop_day && (start_time <= $3 || start_day != $2) && $3 <= stop_time' file 

доходность

 files/file1:Apr 24 10:47:00.663137 somedata files/file1:Apr 25 01:47:00.663147 somedata files/file1:Apr 25 23:47:00.663157 somedata files/file1:Apr 25 23:47:00.663167 somedata 

В течение нескольких месяцев вы можете следовать той же идее, но вам нужно перевести Apr на 04 (pre-processing или awk magic?) И применить к ней <= =>.

  • Как запустить сложный awk-скрипт на удаленной машине?
  • Как я могу удалить весь текст между фигурными скобками в многострочном текстовом файле?
  • Как обновить три файла CSV на основе четвертого файла
  • как назначить значения столбца для заданных условных операторов
  • Согласование 2 основных столбцов между файлами; и вставьте другие столбцы в выходной файл, когда совпадают эти основные столбцы. Сохраняйте размер строки 1-го файла
  • Как напечатать самое длинное число в строке?
  • найти две последовательные повторяющиеся строки
  • Фильтровать файл csv на основе расширенных значений столбца
  • Как сделать значения столбца разделенным запятой?
  • разделить файл на две части, по шаблону
  • выбрать и переместить содержимое в другой файл
  • Как объединить два файла с общим ключом в awk?
  • Linux и Unix - лучшая ОС в мире.