143

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

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

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

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

但是如何排除包含 ofstring1或的行string2

4

8 回答 8

133

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

把这个放在filename.txt

abc
def
ghi
jkl

grep 命令使用 -E 选项和字符串中的标记之间的管道:

grep -Ev 'def|jkl' filename.txt

印刷:

abc
ghi

使用 -v 选项的命令在由括号包围的标记之间带有管道:

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

印刷:

abc
ghi
于 2014-08-11T18:28:41.740 回答
70
grep -Fv -e 'Nopaging the limit is' -e 'keyword to remove is'

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

-v反转比赛

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

于 2016-11-01T23:50:59.120 回答
47

另一种选择是创建一个排除列表,当您有很长的排除列表时,这特别有用。

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
于 2014-02-13T08:30:00.790 回答
23
egrep -v "Nopaging the limit is|keyword to remove is"
于 2013-04-25T10:49:43.443 回答
17
tail -f admin.log|grep -v -E '(Nopaging the limit is|keyword to remove is)'
于 2013-04-25T10:51:53.857 回答
13

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

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

于 2014-10-21T04:43:57.947 回答
9

greps 可以被链接。例如:

tail -f admin.log | grep -v "Nopaging the limit is" | grep -v "keyword to remove is"
于 2015-02-17T17:13:32.457 回答
1

如果你想使用正则表达式:

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

于 2022-01-18T15:25:41.087 回答