Grep 排除多个字符串

我正在尝试使用 tail -f查看日志文件,并希望排除包含以下字符串的所有行:

Nopaging the limit iskeyword to remove is

我可以像这样排除一个字符串:

tail -f admin.log|grep -v "Nopaging the limit is"

但是如何排除包含 string1string2的行?

176297 次浏览
egrep -v "Nopaging the limit is|keyword to remove is"
tail -f admin.log|grep -v -E '(Nopaging the limit is|keyword to remove is)'

另一个选项是创建一个排除列表,当你有一长串要排除的事情时,这个选项特别有用。

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

grep过滤掉多行:

把这些线放在 filename.txt中测试:

abc
def
ghi
jkl

使用 -E标志的 grep命令,字符串中的标记之间有一个管道:

grep -Ev 'def|jkl' filename.txt

印刷品:

abc
ghi

使用 -v标志的 egrep,标记之间的管道由括号包围:

egrep -v '(def|jkl)' filename.txt

印刷品:

abc
ghi

或者通过 grep参数堆叠 -e标志是否可行(credit-> @Frizlab) :

grep -Fv -e def -e jkl filename.txt

印刷品:

abc
ghi

您可以像下面这样使用常规 grep:

tail -f admin.log | grep -v "Nopaging the limit is\|keyword to remove is"

Grep 可以被链接,例如:

tail -f admin.log | grep -v "Nopaging the limit is" | grep -v "keyword to remove is"
grep -Fv -e 'Nopaging the limit is' -e 'keyword to remove is'

-F通过文字字符串(而不是正则表达式)匹配

-v反转火柴

-e允许多种搜索模式(全文字和倒置)

如果要使用正则表达式:

grep -Ev -e "^1" -e '^lt' -e 'John'