Desde un archivo de registro de compilación Maven de 2 GB, intentando capturar las excepciones y su módulo correspondiente. Formato del archivo de registro:
[main] [INFO] -------------< org.maven.plugins.junt:parent >-------------
[main] [INFO] Building junt-parent 1.0.0-SNAPSHOT
...........
...........
...........
...........
Exception units:
<failed units>
<failed units>
Se me ocurrieron las siguientes opciones, pero ambas imprimen líneas adicionales, antes y después del partido. No estoy seguro de cómo recorrer y hacer coincidir el módulo para el cual se han registrado las unidades de excepción. No se requieren líneas entre esas 2 coincidencias, solo las unidades de excepción y su módulo fallido.
sed -n '/Exception units/,/^$/p' maven_build.log
así comosed -n '/Building/,/Exception units/!p'
Editar: Salida esperada:
Building junt-parent 1.0.0-SNAPSHOT
Exception units:
<failed units>
<failed units>
Respuesta1
Por los comentarios descubro que en realidad tienes un archivo como este:
[main] [INFO] Building bar 1.0.0-SNAPSHOT
... Building ........
[main] [INFO] -------------< org.maven.plugins.junt:parent >-------------
[main] [INFO] Building junt-parent 1.0.0-SNAPSHOT
... Building ........
Exception units:
<failed units>
<failed units>
[main] [INFO] Building foo 1.0.0-SNAPSHOT
... Building ........
Y solo si hay una línea, Exception units:
desea que esas líneas se impriman hasta la línea vacía, pero precedidas por la última [main] [INFO] Building
línea, para saber a qué módulo pertenecen los mensajes. ¿Otros [main] [INFO] Building
sin excepciones no deberían imprimirse?
En casos como este, almacena cada [main] [INFO] Building
línea en el espacio de espera con h
, para poder recuperarla si es necesario:
sed -ne '/\[main] \[INFO] Building/h;/Exception units:/{x;p;x;}' -e '//,/^$/p'
Si Exception units:
se encuentra la línea, se cambian los espacios , se imprime la línea x
almacenada y se vuelven a cambiar los espacios. Finalmente se imprimen todas las líneas hasta la línea vacía (el patrón vacío coincide con el último patrón, por lo que no es necesario repetirlo). La salida es:Building
p
x
p
//
[main] [INFO] Building junt-parent 1.0.0-SNAPSHOT
Exception units:
<failed units>
<failed units>
Si esto no es lo que desea, proporcione un ejemplo del mundo real.