如何 grep 查找不包括其他字符串的字符串

How do I grep for a string excluding some other string

我想做这样的事:

grep -A 10 'myString' && NOT 'anotherString'

如果我不需要 -A 10,我知道我可以通过管道传递 greps 并使用 -v,但在这种情况下它不会那样工作。所以我会这样做:

grep "myString" | grep -v "anotherString"

有什么想法吗?

grep 唯一 POSIX 支持的选项是 -EFcefilnqsvx,因此请注意 -A 选项可能不会出现在 grep 的所有实现中。甚至在 GNU grep 上也没有指定 "match OR match" 的选项,也没有可以模拟这个的正则表达式,因为它所能做的就是提供额外的匹配,但不能阻止它们。本质上,单独使用 grep 完成此操作的唯一方法是使用管道。

尝试反转并将带有 -A 10 参数的 grep 放在最后。像这样:

grep -v 'anotherString' | grep -A 10 'myString'