grep异常但排除特定的异常

时间:2012-05-28 06:30:53

标签: regex shell unix grep

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

  

grep -C 10“[。*例外”

但现在我希望排除某些特定的例外情况,例如 AAAException BBBException ,我该怎么办?它?它可以通过

完成
  

grep -v“AAAException”| grep -C 10“[。*例外”

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

2 个答案:

答案 0 :(得分:5)

如果你有grep -P,你可以指定一个负面的后观断言。

grep -C 10 -P '\[.*(?<!AAA|BBB)Exception' 

答案 1 :(得分:0)

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

$ grep -C 10 '\<NullPointerException\>\|\<SessionTimeoutException\>'