Aus einer 2 GB großen Maven-Build-Protokolldatei wird versucht, die Ausnahmen und das entsprechende Modul zu erfassen. Format der Protokolldatei:
[main] [INFO] -------------< org.maven.plugins.junt:parent >-------------
[main] [INFO] Building junt-parent 1.0.0-SNAPSHOT
...........
...........
...........
...........
Exception units:
<failed units>
<failed units>
Habe mir die folgenden Optionen ausgedacht, aber beide drucken zusätzliche Zeilen vor und nach der Übereinstimmung. Ich bin mir nicht sicher, wie ich nach oben gehe und das Modul abgleiche, für das die Ausnahmeeinheiten protokolliert wurden. Zeilen zwischen diesen beiden Übereinstimmungen sind nicht erforderlich, nur die Ausnahmeeinheiten und ihr fehlgeschlagenes Modul.
sed -n '/Exception units/,/^$/p' maven_build.log
sowiesed -n '/Building/,/Exception units/!p'
Bearbeiten: Erwartete Ausgabe:
Building junt-parent 1.0.0-SNAPSHOT
Exception units:
<failed units>
<failed units>
Antwort1
Aus den Kommentaren entnehme ich, dass Sie tatsächlich eine Datei wie diese haben:
[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 ........
Und nur wenn es eine Zeile gibt, Exception units:
möchten Sie, dass diese Zeilen bis zur leeren Zeile gedruckt werden, aber vor der letzten [main] [INFO] Building
Zeile, damit Sie wissen, zu welchem Modul die Nachrichten gehören. Andere [main] [INFO] Building
sollen ausnahmslos nicht gedruckt werden?
In solchen Fällen speichern Sie jede [main] [INFO] Building
Zeile mit im Haltebereich h
, damit Sie sie bei Bedarf wieder aufrufen können:
sed -ne '/\[main] \[INFO] Building/h;/Exception units:/{x;p;x;}' -e '//,/^$/p'
Wenn die Exception units:
Zeile gefunden wird, werden die Leerzeichen geändert x
, die gespeicherte Building
Zeile wird p
gedruckt und die Leerzeichen werden x
zurückgeändert. Abschließend werden alle Zeilen bis zur leeren Zeile p
gedruckt (das leere Muster //
entspricht dem letzten Muster, sodass wir es nicht wiederholen müssen). Die Ausgabe ist:
[main] [INFO] Building junt-parent 1.0.0-SNAPSHOT
Exception units:
<failed units>
<failed units>
Wenn dies nicht das ist, was Sie möchten, geben Sie bitte ein Beispiel aus der Praxis.