Как исправить разные слова в разных строках в Linux - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь отследить журнал с помощью команды tail -f, и когда я сталкиваюсь с двумя разными словами в разных строках в одном журнале, мне нужно записать их и отправить уведомление по электронной почте:

Например: cat example.txt:

<event> 12345 </event>
<Description> Exception on file transfer for user ABC </Description>

Мне нужно отслеживать событие «12345» с «Исключением» для пользователя «ABC».

Когда я делаю tail -F example.txt | egrep "12345|Exception|ABC" Это Команда печатает, если видит какое-либо ключевое слово Grep. Вместо этого его нужно печатать, только если он встречает все ключевые слова в grep.

1 Ответ

1 голос
/ 15 марта 2019

1001 * попробовать *

tail -f example.txt | egrep --line-buffered  "Exception.*ABC" -B 1 | egrep -v Description
  • "Exception. * ABC" поиск строк, имеющих Exception AND ABC
  • "- B 1" должен иметь предыдущую строку (событие)
  • "- line-buffered" - включить режим буферизации grep (иначе второй egrep не будет обрабатываться)
  • "| egrep -v Description" окончательно удаляет строку описания (поскольку вы просто хотите событие)

в итоге вы получите

    <event> 12345 </event>

Поиграйте с каждым параметром, чтобы увидеть разницу

привет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...