Простое использование хвоста и grep. Несколько условий

Извинения за мое незнание, я довольно плохо знаком с этим.

Я пытаюсь считать файл журнала, который пишется в простым демоном. То, что я хотел бы сделать, отфильтровать мой "живой" вывод к определенному - нескольким - "типы".

Мои типы: DEBUG|INFO|WARN|ERROR|FATAL

Это - то, что я имею до сих пор, и это работает на 1 случай, я не могу получить его работающий на несколько случаев все же.

tail -f log.txt | grep INFO

Я попробовал пару вещей попытаться сказать, что я хочу"WARNи ERROR" но ничто действительно не работает на меня. Как я исправил бы это?

Спасибо

6
задан 23.10.2009, 18:05

3 ответа

попробовать

tail -f log.txt | egrep 'WARN|ERROR'
15
ответ дан 07.12.2019, 15:31

В дополнение к переключению на egrep/grep -E для получения оператора чередования расширенных регулярных выражений Вы можете, можно также использовать несколько -e аргументы постоянному клиенту grep или даже fgrep/grep -F

На самом деле, если Ваши поиски являются всеми статическими строками (как исходный вопрос), можно даже 'понизить' полностью до fgrep/grep -F который мог бы дать повышение скорости (так как оно всегда направляет сравнения строк без regexps).

fgrep -e DEBUG -e INFO -e WARN -e ERROR -e FATAL

Также POSIX позволяет шаблонам быть разделенными новыми строками.

# bash-ish to put a newlines into the string
fgrep $'DEBUG\nINFO\nWARN\nERROR\nFATAL'

# Standard syntax, but easier to break while editing(?):
fgrep "$(for f in DEBUG INFO WARN ERROR FATAL; do echo "$f"; done)"
2
ответ дан 07.12.2019, 15:31

Это также работает (регулярный grep и выйдите из символа вертикальной черты):

tail -f log.txt | grep 'WARN\|ERROR'
0
ответ дан 07.12.2019, 15:31

Теги

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