当前位置: 首页>>技术问答>>正文


grep排除多个字符串

,

问题描述

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

"Nopaging the limit is"`  and `"keyword to remove is"

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

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

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

最佳解决办法

使用grep过滤多行的两个示例:

把它放在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

第三种解决办法

grep -Fv -e 'Nopaging the limit is' -e 'keyword to remove is'

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

-v反转比赛

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

第四种办法

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)'

第六种办法

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

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

第七种办法

greps可以链接。例如:

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/6987.html,未经允许,请勿转载。