如何 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'
我想做这样的事:
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'