2012-05-28 18 views
5

Actualmente estoy a juego para la "excepción" de un archivo, y la salida de 10 líneas antes y después de usar:Excepción grep pero excluyen excepción específica

grep-C10 "[* Excepción"

Pero ahora desean excluir ciertas excepciones específicas, dicen AAAException y BBBException, ¿cómo podría hacerlo? Se puede hacer a través de

grep -v "AAAException" | grep-C10 "[. * Excepción"

Pero si dentro del archivo, tengo AAAException a menos de 10 líneas de alguna otra excepción, esa línea no estarían incluidos en la salida, lo que no es lo que quiero. ¿Cómo no puedo hacer coincidir con AAAException, pero si se produjo dentro de las 10 líneas de alguna otra excepción, todavía se incluirá en la salida?

Respuesta

5

Si tiene grep -P puede especificar una aseveración lookbehind negativa.

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

¡Funciona a la perfección! Gracias. – Kathie

+0

Me preguntaba ¿cómo? Kathie

+0

Básicamente significa que "el texto anterior aquí no puede ser". – tripleee

0

Si su patrón de coincidencia positiva Excepción es una palabra, es decir, no precedida/seguida de otros alfabetos, entonces puede usar el límite de palabras.

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

Puede ser cualquier tipo de excepción, por ejemplo NullPointerException o SessionTimeoutException – Kathie

+0

Si tiene lista de + ve * excepción, puede ** O con | ** – tuxuday

+0

que no entiendo lo que quiere decir "OR con | ", sin embargo, en este momento, tengo una lista de exclusión en su lugar – Kathie

Cuestiones relacionadas