Linux 4行反转包含许多文件的目录中的grep搜索

Linux 4行反转包含许多文件的目录中的grep搜索,linux,shell,grep,Linux,Shell,Grep,我在一个目录中有许多日志文件。在这些文件中,有许多行。其中一些行包含ERRORword 我正在使用grep ERROR abc.*从所有abc1、abc2、abc3等文件中获取错误行 现在,有4-5行ERROR我想避免 所以,我使用 grep ERROR abc* | grep -v 'str1\| str2' 这个很好用。但当我再插入一个字符串时 grep ERROR abc* | grep -v 'str1\| str2\| str3 它不会受到影响 我需要避免使用4-5个字符串。。有人

我在一个目录中有许多日志文件。在这些文件中,有许多行。其中一些行包含
ERROR
word

我正在使用
grep ERROR abc.*
从所有abc1、abc2、abc3等文件中获取错误行

现在,有4-5行
ERROR
我想避免

所以,我使用

grep ERROR abc* | grep -v 'str1\| str2'
这个很好用。但当我再插入一个字符串时

grep ERROR abc* | grep -v 'str1\| str2\| str3
它不会受到影响


我需要避免使用4-5个字符串。。有人能提出一个解决方案吗?

你的例子应该有用,但你也可以使用

grep ERROR abc* | grep -e 'str1' -e 'str2' -e 'str3' -v

您正在使用多个搜索模式,即在某种程度上使用正则表达式-E支持扩展正则表达式,如下面的
man
页面所示

   -e PATTERN, --regexp=PATTERN
          Use PATTERN as the pattern.  This can be used to specify multiple search patterns, or to protect a pattern beginning with a hyphen (-).  (-e is specified by POSIX.)

   -E, --extended-regexp
       Interpret PATTERN as an extended regular expression (ERE, see below).  (-E is specified by POSIX.)
因此,您需要将
-E
标志与
-v
反向搜索一起使用

grep ERROR abc* | grep -Ev 'str1|str2|str3|str4|str5'
供您参考的用法示例:-

$ cat sample.txt
ID    F1    F2    F3    F4      ID    F1    F2    F3    F4
aa aa
bb    1    2    3    4  bb    1    2    3    4
cc    1    2    3    4  cc    1    2    3    4
dd    1    2    3    4  dd    1    2    3    4
xx xx

$ grep -vE "aa|xx|yy|F2|cc|dd" sample.txt
bb    1    2    3    4  bb    1    2    3    4

那个字符串的值是多少?您需要给出输入/输出示例和/或一个最小的、有效的、可重复的代码示例。小心-您正在谈论字符串(
insert 1 more string
str1
等)但是,您正在将grep与regexp一起使用,而不是字符串。了解其中的区别,并使用正确的工具和正确的选项来选择所需的内容,并在请求帮助时使用正确的术语来完成所需的工作。当您的问题包含简明、可测试的样本输入/输出时,如果您希望搜索strin,请务必准确gs或regexp,以便我们能最好地帮助您。您真的需要
|
之后的空间吗?