Плитка logfile на куски и поиск ошибок

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

Маленький пример:

Файл журнала выглядит следующим образом:

STARTLOG1
блаб
more_blabla
ENDLOG1
STARTLOG2
ОШИБКА: Errortext
Это ошибка
от пользователя XYZ
ENDLOG2
STARTLOG3
блаб
more_blabla
ENDLOG3

Я хочу разбивать logfile на куски. Все строки между STARTLOG и ENDLOG должны быть 1 шт. Когда в куске появляется ошибка, извлеките весь фрагмент в файл. Файл должен выглядеть так:

STARTLOG2
ОШИБКА: Errortext
Это ошибка
от пользователя XYZ
ENDLOG2

One Solution collect form web for “Плитка logfile на куски и поиск ошибок”

Попробуй это:

$ awk -v RS="STARTLOG" '/ERROR/{print RS$0; }' log STARTLOG2 ERROR: Errortext This is an Error from user XYZ ENDLOG2 

Для перенаправления на файл с именем logN где N – номер из STARTLOG , используйте:

 gawk -v RS="STARTLOG" '/ERROR/{print RS$0 > "log"$1; }' log 

объяснение

RS является разделителем записей, это то, что определяет, что такое «строка» для awk . Здесь я устанавливаю его в STARTLOG чтобы вся запись обрабатывалась как одна строка. Затем, если эта «строка» содержит ERROR , я печатаю STARTLOG ( RS , это просто для воссоздания того же формата).

Вы также можете использовать один и тот же подход с Perl:

 perl -lne 'BEGIN{$/="STARTLOG"}{print "$/$_" if /ERROR/}' log 
  • Какой самый простой способ найти неиспользуемый локальный порт?
  • Создайте каталог с датой
  • Не удается выполнить команду с корнем на удаленном хосте Linux
  • Следуйте перемещенному файлу в его целевой каталог
  • grep для переменной
  • Bash получает ожидаемое целочисленное выражение
  • Как удалить (1) из имен файлов с помощью команды find
  • Невозможно изменить оболочку bash в Mac OS X
  • восстановить удаленный файл, открытый apache?
  • В форме `exec FD>` exec
  • Как получить записи таблицы psql в сценарии оболочки?
  • Interesting Posts

    Бинарная совместимость между Mac OS X и Linux

    Я установил время для неправильного часового пояса, как мне его изменить? (Debian)

    Установка afp share через fstab приводит к сбоям в загрузке, но работает после загрузки

    Установка ОС из источника на отдельный раздел. Это возможно?

    PC Boots to grub> после размещения записей таблицы разделов в порядке диска

    Преобразование Perl-скрипта в bash

    Как обработать серию файлов после завершения передачи

    Не удается подключиться к модему 3g во время установки Arch

    Как добавить запись в контекстное меню?

    Как добавить предварительно скомпилированную библиотеку в autotools?

    Регулярное выражение Yum или поиск по шаблону?

    Как связать файл журнала с / dev / null и восстановить автоматически используемое пространство

    Solaris 10 – Является ли изоляция зоны достаточной для разделения серверов с высоким и низким уровнем безопасности?

    вставить значение в конце каждой записи на основе уникальных идентификаторов

    Группируйте все строки на основе первого столбца, затем вычислите общее количество второго и третьего столбцов

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