5

我目前正在从文件中匹配“异常”,并在使用前后输出 10 行:

grep -C 10 "[.*异常"

但是现在我想排除某些特定的异常,比如AAAExceptionBBBException,我该怎么做呢?它可以通过

grep -v "AAAException" | grep -C 10 "[.*异常"

但是,如果在文件中,我在其他异常的 10 行内有AAAException,则该行将不会包含在输出中,这不是我想要的。我怎么能不匹配AAAException,但如果它发生在其他异常的 10 行内,​​它仍然会包含在输出中?

4

2 回答 2

5

如果你有grep -P,你可以指定一个否定的后向断言。

grep -C 10 -P '\[.*(?<!AAA|BBB)Exception' 
于 2012-05-28T07:49:25.577 回答
0

如果您的正匹配模式异常是一个单词,即没有在其他字母之前/之后,那么您可以使用单词边界。

$ grep -C 10 '\<NullPointerException\>\|\<SessionTimeoutException\>'
于 2012-05-28T06:40:22.070 回答