Відповіді:
Опція інверсії матчу шаблону -vдля grepдуже корисно для цього:
grep -v 'UFW BLOCK' /var/log/syslog
Це покаже вам всі рядки, які не містять UFW BLOCK. Оскільки grepвикористовуються основні регулярні вирази за замовчуванням, включення дужок змусить шукати будь-який з окремих символів 'UFW BLOCK', включаючи пробіл. Ви, ймовірно, не отримаєте жодного результату. Якщо вам потрібно переконатися, що навколо рядка є дужки, або відімкніть їх \[UFW BLOCK\], або скористайтеся -Fопцією grepвключення лише фіксованих рядків (Спасибі Zanna та Steeldriver за поради з цього приводу):
grep -Fv '[UFW BLOCK]' /var/log/syslog
Ви можете полегшити перегляд, підключивши вихід до пейджера, наприклад less:
grep -v 'UFW BLOCK' /var/log/syslog | less
Або перенаправити вихід на файл у домашній каталог для подальшого перегляду:
grep -v 'UFW BLOCK' /var/log/syslog > ~/filtered_syslog
fgrepкоманду, еквівалентну grep -F.
Ви можете використовувати будь-який інструмент з можливостями редагування. Ви вже отримали рішення, використовуючи, grepі sedось кілька інших варіантів. Всі вони можуть бути легко конвеєр lessабо moreабо що - небудь ще.
Perl
perl -ne 'print unless /\[UFW BLOCK\]/' /var/log/syslog
Оскільки це Perl, TIMTOWDI! .
perl -pe '$_="" if /\[UFW BLOCK\]/' /var/log/syslog
perl -ne '/\[UFW BLOCK\]/ || print' /var/log/syslog
perl -ne 'print if !/\[UFW BLOCK\]/' /var/log/syslog
perl -ne '!/\[UFW BLOCK\]/ && print' /var/log/syslog
perl -ne '/\[UFW BLOCK\]/ ? "" : print' /var/log/syslog
awk
awk '!/\[UFW BLOCK\]/' file
Ви також можете використовувати awk:
awk '!/PATTERN/' log
Я використовую його, коли у мене більше одного "шаблону", і я не хочу використовувати два grepтаких:
... | grep -v foo | grep -v bar
який синтаксис:
awk '!/PATTERN/ && !/PATTERN2/' log
grep -Ev "foo|bar"? "
-eдля визначення декількох шаблонів. grep -v -e 'foo' -e 'bar'
За lessдопомогою &параметра команди можна відфільтрувати, щоб відобразити лише потрібний відповідний візерунок, як показано нижче,
& /PATTERN/
у вашому випадку, якщо ви хочете, щоб лінії фільтра з UFW BLOCKне відображалися у вихідних даних, ви можете просто скористатися &!як нижче:
&! /UFW BLOCK/
lessпропонує можливість фільтрувати відображені рядки за малюнком регулярного вираження. Ви можете використовувати цю функцію, ввівши&слідом за шаблоном, а можна відновити її, ввівши&самостійно.