В настоящее время я пытаюсь записать tail
журнал, но только показывая строки, содержащие несколько ключевых слов. В настоящее время я используюНесколько grep piping (include + exclude) приводит к тому, что ничего не отображается
tail -F file.log | grep -ie 'error\|fatal\|exception\|shutdown\|started'
, и я получаю ожидаемые результаты: (например)
10:22 This is an error
10:23 RuntimeException: uncaught problem
Я также хочу, чтобы исключить строки, содержащие <DATATAG>
, даже если ключевые слова проскользнули в него , потому что он содержит много двоичных данных, которые загромождают мой журнал. Я потом пытаюсь добавить к трубе другого Grep, исключающий тег:
tail -F file.log | grep -ie 'error\|fatal\|exception\|shutdown\|started' | grep -vF '<DATATAG>'
Однако, на этот раз не появляются никаких линий, даже не предыдущие, что имеет «ошибку»/«исключение», но не <DATATAG>
. Когда я попробовал исключить только grep:
tail -F file.log | grep -vF '<DATATAG>'
все строки появляются, в том числе те, у которых есть «ошибка»/«исключение».
Я делаю что-то неправильно?
Это буферизация, как @ jzer7 говорит, но вместо нескольких труб и отбирает, рассмотрим только один AWK: 'хвост -F file.log | awk '!//&& tolower ($ 0) ~/error | fatal | exception | shutdown | start /' '. –