файл tail -va, исключая список слов

файл tail -va, исключая список слов

Я хотел бы отслеживать файл журнала, в который постоянно ведется запись, но хотел бы исключить различные записи, которые являются «обычными», чтобы видеть только ошибки и т. д. по мере их возникновения. Я могу передать их в grep -v «pattern», но в идеале хотел бы использовать файл, содержащий записи для пропуска. Есть идеи?

решение1

Вы можете использовать grep -v "pattern", как вы сказали. Но вместо patternиспользования

`cat file_with_entires_to_skip`

Не забудьте включить обратные кавычки. Таким образом, ваша команда будет выглядеть так:

tail -v FILE | grep -v "`cat FILE_WITH_ENTRIES_TO_SKIP`"

решение2

Параметр -fпозволяет grepуказать файл, содержащий шаблоны, по одному шаблону на строку. См. grep(1)страницу man.

Кроме того, unbufferкоманда, доступная в некоторых системах, отключит буферизацию вывода, которая обычно происходит в конвейерах. В противном случае добавление фильтра grepможет задержать вывод вашего конвейера. unbuffer(1)Подробности см. на странице руководства.

решение3

Мой grep включает --exclude-from=FILEопцию, которая позволяет мне добавлять шаблоны исключений из файла. У меня есть:

my-macbook-pro:Sun America ianchesal$ grep --version
grep (GNU grep) 2.5.1

Итак, вы можете сделать:

tail -f <file> | grep --exclude-from=excludes.txt

решение4

Попробуйте использовать: grep -v -f EXCLUDE_FILENAME_LIST TARGET_FILENAME

EXCLUDE_FILENAME_LIST = Список слов, которые вы хотите извлечь из вашего поиска TARGET_FILENAME = Основной файл, который вы хотите извлечь

Связанный контент