Ответы:
Опция инверсии соответствия шаблона -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
дает возможность фильтровать отображаемые строки после шаблона регулярных выражений. Вы можете использовать эту функцию, печатая с&
последующим шаблоном, и вы можете отменить ее, введя&
один.