2GB Maven 빌드 로그 파일에서 예외 및 해당 모듈을 캡처하려고 합니다. 로그 파일 형식:
[main] [INFO] -------------< org.maven.plugins.junt:parent >-------------
[main] [INFO] Building junt-parent 1.0.0-SNAPSHOT
...........
...........
...........
...........
Exception units:
<failed units>
<failed units>
아래 옵션을 생각해 냈지만 둘 다 경기 전후에 추가 줄을 인쇄하고 있습니다. 예외 단위가 기록된 모듈을 탐색하고 일치시키는 방법을 잘 모르겠습니다. 두 일치 항목 사이의 줄은 필요하지 않으며 예외 장치와 실패한 모듈만 필요합니다.
sed -n '/Exception units/,/^$/p' maven_build.log
게다가sed -n '/Building/,/Exception units/!p'
편집: 예상되는 출력:
Building junt-parent 1.0.0-SNAPSHOT
Exception units:
<failed units>
<failed units>
답변1
의견을 통해 나는 당신이 실제로 다음과 같은 파일을 가지고 있다는 것을 알았습니다.
[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 ........
Exception units:
그리고 빈 줄까지 해당 줄을 인쇄하고 마지막 줄 앞에 오는 줄이 있는 경우에만 [main] [INFO] Building
메시지가 속한 모듈을 알 수 있습니다. 그 외에는 [main] [INFO] Building
예외 없이 인쇄하면 안 되나요?
[main] [INFO] Building
이와 같은 경우에는 를 사용하여 각 라인을 보류 공간에 저장하므로 h
필요한 경우 다시 불러올 수 있습니다.
sed -ne '/\[main] \[INFO] Building/h;/Exception units:/{x;p;x;}' -e '//,/^$/p'
해당 Exception units:
줄이 발견되면 공백이 변경되고 x
, 저장된 Building
줄이 p
지워지고 공백이 x
다시 변경됩니다. 마지막으로 빈 줄까지의 모든 줄이 p
린트됩니다(빈 패턴은 //
마지막 패턴과 일치하므로 반복할 필요가 없습니다). 출력은 다음과 같습니다
[main] [INFO] Building junt-parent 1.0.0-SNAPSHOT
Exception units:
<failed units>
<failed units>
이것이 원하는 것이 아니라면 실제 사례를 들어주세요.