Найти совпадение "после".....

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
tango
Access Forbidden
Сообщения: 247
Зарегистрирован: 2007-12-15 17:41:18
Откуда: Санкт- Петербург
Контактная информация:

Найти совпадение "после".....

Непрочитанное сообщение tango » 2009-04-29 12:49:35

Как можно найти заданную строку (шаблон) в логфайле ПОСЛЕ определенной строки?
Немного поясню...
Есть логфайл freshclam.log, мне нужно для нагиоса настроить проверку удачно/неудачно прошло обновление.
Для этого, как я понимаю, нужно сначала в логфайле найти строчку с сегодняшней датой (обновляется раз в сутки)

Код: Выделить всё

lan# date +%c
среда, 29 апреля 2009 г. 13:38:34
и если эта запись есть, то грепнуть файл на предмет поиска "failed update" ПОСЛЕ строки с датой....
Что-то не соображу как это сделать.. :)

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Найти совпадение "после".....

Непрочитанное сообщение zg » 2009-04-29 13:05:34

я бы сначала выбрал целевые записи, потом отбирал по дате

_tango
проходил мимо

Re: Найти совпадение "после".....

Непрочитанное сообщение _tango » 2009-04-29 14:39:40

man grep рулит :)
то что мне нужно делается так:

Код: Выделить всё

grep -i -A 15 "Wed Apr 29" /var/log/clamav/freshclam.log | grep -i "failed updated"

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Найти совпадение "после".....

Непрочитанное сообщение zg » 2009-04-29 16:18:09

_tango писал(а):grep -i -A 15
а если это будет 16-цатая строка?

_ tango
проходил мимо

Re: Найти совпадение "после".....

Непрочитанное сообщение _ tango » 2009-04-29 16:45:01

ну это я для примера привела.....
а в скрипте выставила значение с "запасом" - 50 строк
полюбому статус обновления туда попасть должен... :)

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Найти совпадение "после".....

Непрочитанное сообщение zg » 2009-04-29 18:42:02

_ tango писал(а):полюбому статус обновления туда попасть должен...

Код: Выделить всё

zg# grep -Ei '(Wed Apr 22|updated)' 1.txt | grep -iA1 'Wed'
Wed Apr 22
good updated
zg# grep -Ei '(Wed Apr 23|updated)' 1.txt | grep -iA1 'Wed'
Wed Apr 23
failed updated
zg# grep -Ei '(Wed Apr 29|updated)' 1.txt | grep -iA1 'Wed'
Wed Apr 29
failed updated
zg#

Код: Выделить всё

zg# cat 1.txt
Wed Apr 22
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
good updated
Wed Apr 23
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
failed updated
Wed Apr 29
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
failed updated
:roll:

_ tango
проходил мимо

Re: Найти совпадение "после".....

Непрочитанное сообщение _ tango » 2009-04-30 8:48:44

О! Супер! Именно то что мне было нужно. :) Спасибо!
Ман до конца не дочитала... :oops: .... "А" в мане мне попалось раньше чем "Е".

Аватара пользователя
tango
Access Forbidden
Сообщения: 247
Зарегистрирован: 2007-12-15 17:41:18
Откуда: Санкт- Петербург
Контактная информация:

Re: Найти совпадение "после".....

Непрочитанное сообщение tango » 2009-04-30 10:24:24

Блин.... что-то не выходит "каменный цветок"... :)
Как в регулярное выражение подставить переменную, чтобы ее grep понял?
Пример скрипта:

Код: Выделить всё

#!/bin/sh

    CLAMAVFILE=/var/log/clamav/test.log
    DATE=`date +%c | awk '{print $1, $2, $3}'`;
    CK_DATE=`grep -i "$DATE" $CLAMAVFILE`;
    STATUS=`grep -iE '($DATE |update.failed)' $CLAMAVFILE | grep -iA1 "$DATE" | grep -v "$DATE"`;

if [ "$CK_DATE" ]

    then

         if [ "$STATUS" ]

             then

                 echo "Critical - Update failed!"

             else

                 echo "OK - Database updated $DATE"

         fi

    else

         echo "WARNING - Check last update Database!"

fi
сейчас в выражении '($DATE |update.failed)'
команда grep переменную $DATE не понимает

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Найти совпадение "после".....

Непрочитанное сообщение terminus » 2009-04-30 11:39:57

Может косяк в том, что надо одинарные кавычки ' ' заменить на двойные " "

Код: Выделить всё

"($DATE |update.failed)"
Одинарные кавычки выключают парсинг переменных (символ $ воспринимается не как мета-символ, а как обычный)
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

_ tango
проходил мимо

Re: Найти совпадение "после".....

Непрочитанное сообщение _ tango » 2009-04-30 11:52:56

Точно! Нашла косяк... у меня там пробел лишний после переменной и кавычки поменяла.
Все работает теперь :)
Спасибо.