A partir de um arquivo de log de construção do Maven de 2 GB, tentando capturar as exceções e seu módulo correspondente. Formato do arquivo de log:
[main] [INFO] -------------< org.maven.plugins.junt:parent >-------------
[main] [INFO] Building junt-parent 1.0.0-SNAPSHOT
...........
...........
...........
...........
Exception units:
<failed units>
<failed units>
Surgiu as opções abaixo, mas ambas estão imprimindo linhas adicionais, antes e depois da partida. Não tenho certeza de como percorrer e combinar o módulo para o qual as unidades de exceção foram registradas. As linhas entre essas duas correspondências não são necessárias, apenas as unidades de exceção e seu módulo com falha.
sed -n '/Exception units/,/^$/p' maven_build.log
assim comosed -n '/Building/,/Exception units/!p'
Editar: Saída esperada:
Building junt-parent 1.0.0-SNAPSHOT
Exception units:
<failed units>
<failed units>
Responder1
A partir dos comentários, descobri que você realmente tem um arquivo 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 ........
E somente se houver uma linha Exception units:
você deseja que essas linhas sejam impressas até a linha vazia, mas precedidas da última [main] [INFO] Building
linha, para saber a qual módulo as mensagens pertencem. Outros, [main] [INFO] Building
sem exceções, não devem ser impressos?
Em casos como este, você armazena cada [main] [INFO] Building
linha no espaço de espera com h
, para poder recuperá-la se necessário:
sed -ne '/\[main] \[INFO] Building/h;/Exception units:/{x;p;x;}' -e '//,/^$/p'
Se a Exception units:
linha for encontrada, os espaços serão alterados, a linha x
armazenada será impressa e os espaços serão alterados novamente. Finalmente todas as linhas até a linha vazia são impressas (o padrão vazio corresponde ao último padrão, portanto não precisamos repeti-lo). A saída é:Building
p
x
p
//
[main] [INFO] Building junt-parent 1.0.0-SNAPSHOT
Exception units:
<failed units>
<failed units>
Se não é isso que você deseja, dê um exemplo do mundo real.