SmartMonTools: Как узнать, запущен ли на моем жестком диске какой-либо тест smartctl?

Теперь, когда ваш формат данных установлен, ответ становится намного проще: grep был построен для этого .

Использовать как grep ''

Где - SearchWORD1 или SearchW1 \ | SearchW2

ответ ниже был написан, когда я и @murphy все еще имели неправильные предположения о формате данных:

Вот однострочная программа awk, которая ищет только ERROR :

awk '/ ERROR / { a = 1; печать} / ^ / || / ^ \ t / {if (a) print; next}! / ERROR / {a = 0} '

Вы можете превратить это в гибкую оболочку-функцию с параметром:

searchlog(){ awk -f <( echo "
/$1/{a=1;print}
/^ /||/^\t/{if (a) print;next}
! /$1/{a=0}
"); }

Запустите ее как LogData_generated_by_program | searchlog или searchlog .

Для примера формата данных, «угадаемого» другим респондентом, это приводит к:

$ searchlog ERROR < /tmp/exampleData
[09:44:22] [main] ERROR [url/location] - A ONE LINE ERROR
[09:44:22] [main] ERROR [url/location] - A MULTI LINE ERROR 
    with whitepace indention
[09:44:22] [main] ERROR [url/location] - A MULTI LINE ERROR 
       with tab indention
42
10.05.2015, 01:03
0 ответов

Теги

Похожие вопросы