Плитка 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 
  • Почтовое оповещение с сообщением «tar: Удаление ведущих` / 'из имен участников »
  • Есть ли инструмент, который автоматически вставляет и обновляет блок заголовка сценария, например, сценарии оболочки или Python?
  • «Rm. *» Когда-либо удаляет родительский каталог?
  • Есть ли способ, чтобы функция в моем сценарии bash автоматически запускалась при любой ошибке команды?
  • Как извлечь одну папку из большого архива tar.gz?
  • Удалить часть пути из переменной содержимого
  • Как выбрать второй столбец после найденного шаблона, шаблоны - «100»,
  • Невозможно использовать find -print в AWK
  • Как исправить странное приглашение bash на сервере Debian (Squeeze)?
  • матч и замена в PNG-файле
  • Shell Script не может управлять командой man
  • Interesting Posts
    Linux и Unix - лучшая ОС в мире.