grep排除多个字符串

时间:2013-04-25 10:43:38

标签: linux ubuntu

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

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

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

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

但如何排除包含string1string2

的行

7 个答案:

答案 0 :(得分:85)

使用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

答案 1 :(得分:33)

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

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

答案 2 :(得分:28)

-F

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

-e反转匹配

select empid, lastname from HR.Employees where LastName LIKE '[a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z]%' COLLATE Latin1_General_CS_AS; 允许多种搜索模式(所有文字和反向)

答案 3 :(得分:19)

egrep -v "Nopaging the limit is|keyword to remove is"

答案 4 :(得分:11)

tail -f admin.log|grep -v -E '(Nopaging the limit is|keyword to remove is)'

答案 5 :(得分:10)

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

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

答案 6 :(得分:5)

greps可以链接。例如:

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