Я пытаюсь увидеть файл журнала с помощью tail -f
и хочу исключить все строки, содержащие следующие строки:
"Nopaging the limit is"` and `"keyword to remove is"
Я могу исключить одну строку следующим образом:
tail -f admin.log|grep -v "Nopaging the limit is"
Но как я исключаю строки, содержащие любой из string1
или string2
.
Поместите это в filename.txt
:
abc
def
ghi
jkl
команда grep с использованием опции -E с каналом между токенами в строке:
grep -Ev 'def|jkl' filename.txt
печатает:
abc
ghi
Команда с использованием опции -v с каналом между токенами, окруженными parens:
egrep -v '(def|jkl)' filename.txt
печатает:
abc
ghi
Другой вариант - создать список исключений, особенно полезен, когда у вас есть длинный список исключений.
vi /root/scripts/exclude_list.txt
Теперь добавьте то, что вы хотели бы исключить
Nopaging the limit is
keyword to remove is
Теперь используйте grep для удаления строк из файла журнала файлов и просмотра информации, не исключенной.
grep -v -f /root/scripts/exclude_list.txt /var/log/admin.log
-v
с -f
(или что последний вообще существует).
egrep -v "Nopaging the limit is|keyword to remove is"
grep -Fv -e 'Nopaging the limit is' -e 'keyword to remove is'
-F
соответствует литеральными строками (вместо регулярного выражения)
-v
инвертирует совпадение
-e
позволяет использовать несколько шаблонов поиска (все литеральные и инвертированные)
grep -v
и искусственного требования регулярного выражения (позволяет четко указывать несколько строк в отдельных аргументах). Только представьте, что вы создаете это регулярное выражение программно в скрипте для строк, которые могут содержать что угодно ...
Вы можете использовать обычный grep следующим образом:
tail -f admin.log | grep -v "Nopaging the limit is\|keyword to remove is"
tail -f admin.log|grep -v -E '(Nopaging the limit is|keyword to remove is)'
Глыбы могут быть скованы цепью. Например:
tail -f admin.log | grep -v "Nopaging the limit is" | grep -v "keyword to remove is"
grep -v -e def -e jkl
который ИМХО более понятен…grep -Fv -e def -e jkl
который еще быстрее!