Извинения за мое незнание, я довольно плохо знаком с этим.
Я пытаюсь считать файл журнала, который пишется в простым демоном. То, что я хотел бы сделать, отфильтровать мой "живой" вывод к определенному - нескольким - "типы".
Мои типы: DEBUG|INFO|WARN|ERROR|FATAL
Это - то, что я имею до сих пор, и это работает на 1 случай, я не могу получить его работающий на несколько случаев все же.
tail -f log.txt | grep INFO
Я попробовал пару вещей попытаться сказать, что я хочу"WARN
и ERROR
" но ничто действительно не работает на меня. Как я исправил бы это?
Спасибо
В дополнение к переключению на 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)"
Это также работает (регулярный grep
и выйдите из символа вертикальной черты):
tail -f log.txt | grep 'WARN\|ERROR'
grep -E
также работы. – quack quixote 23.10.2009, 18:23