Answers:
模式匹配反转选项-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 -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提供了在正则表达式模式之后过滤显示行的可能性。您可以&通过在模式后面键入来使用此功能,也可以通过&单独键入来还原它。