файл tail -va при исключении списка слов

12979
John

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

2

4 ответа на вопрос

5
Wuffers

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

`cat file_with_entires_to_skip` 

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

tail -v FILE | grep -v "`cat FILE_WITH_ENTRIES_TO_SKIP`" 
Сделайте это grep -v "cat FILE_WITH_ENTRIES_TO_SKIP", иначе оболочка расширит специальные символы в списке шаблонов. Gilles 14 лет назад 0
Вы имеете в виду `grep -v" \ `cat FILE_WITH_ENTIRES_TO_SKIP \` "`? (Вы должны убежать от спины в Markdown.) Wuffers 14 лет назад 0
2
garyjohn

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

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

Вы могли бы упомянуть, что вам нужны -f и -v для данных требований. Hans-Peter Störr 11 лет назад 0
Похоже, они пытаются исключить конкретные результаты, а не шаблоны, поэтому поиск по фиксированной строке (-F) был бы более уместным. Я бы пошел с `tail -v [file_to_tail] | grep -Fvf [file_with_list_of_lines_to_exclude] ` Hammer Bro. 7 лет назад 0
0
Velociraptors

Используйте, grep -f FILEи он получит шаблоны из этого файла. Смотрите man-страницу для получения дополнительной информации.

0
Ian C.

Мой 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 
Msgstr "Пропустить файлы, базовое имя которых совпадает с любым из глобусов имени файла, прочитанных из FILE (с использованием подстановочных знаков, как описано в разделе --exclude)." Так что это для пропуска файлов, а не совпадений Janus Troelsen 11 лет назад 0