sed-스크립트를 어떻게 개선하거나 래핑할 수 있나요?

sed-스크립트를 어떻게 개선하거나 래핑할 수 있나요?

나중에 분석하고 싶은 프로파일링 데이터를 생성하기 위해 mvn 빌드를 계측했습니다. 따라서 프로파일러 출력에서 ​​json 데이터를 생성하기 위해 아래 sed 스크립트를 만들었습니다. 나는 다음과 같이 스크립트를 호출합니다.

cat some.log | sed -nf thescript.sed > some.json

json 객체("프로젝트")의 중첩 목록을 생성하지만 각 목록은 ","로 끝납니다.

여기에서 유효한 json 파일을 만들기 위해 내가 가장 좋아하는 편집기에서 다음 단계를 수행합니다.

  • 모든 것을 한 줄로 합치기
  • 전체 콘텐츠 앞에 "{\"list\":["를 추가하고 "]}"를 추가하여 래핑 개체를 삽입합니다.
  • ", ]"(잘못 종료된 목록)의 모든 항목을 "]"로 바꿉니다.
  • 지나치게 긴 줄로 인해 JSON 구문 분석이 중단되는 것을 방지하려면 각 프로젝트 뒤에 줄바꿈을 삽입하세요.

현재 이 단계를 수동으로 수행하고 있으며 이 단계도 스크립트로 작성하고 싶습니다.

  • 유효한 json을 생성하기 위해 sed 스크립트를 얻으려면 어떻게 해야 합니까(즉, 줄바꿈을 합니까?)오직내가 원할 때 또는 종료 ","를 넣지 마세요)
  • 또는 다른 필터에서 위의 단계를 어떻게 스크립트할 수 있습니까?

    /[PROFILER]/ s/\[PROFILER\] \(.*\)ms : Task (project-execute new-mvifp:\(.*\):\(.*\) (  task-segment: \[\(.*\)\] )) started./{"\2":{"timestamp":\1,"project":"\2","tasks":"\4","branch":"\3","segments":[/p
    /[PROFILER]/ s/\[PROFILER\] \(.*\)ms : Task (Segment:\(.*\)) started./{"\2":{"timestamp":\1,"segment":"\2","mojos":[/p
    /[PROFILER]/ s/\[PROFILER\] \(.*\)ms : Task (mojo-execute \(.*\) {execution: \(.*\)}) started./{"\2":{"timestamp":\1,"mojo":"\2","execution":"\3",/p
    /[PROFILER]/ s/\[PROFILER\] \(.*\)ms : Task (mojo-execute \(.*\) {execution: \(.*\)}) finished.*duration \(.*\)ms./"duration":\4}},/p
    /[PROFILER]/ s/\[PROFILER\] \(.*\)ms : Task (Segment:\(.*\)) finished.*duration \(.*\)ms./],"duration":\3}},/p
    /[PROFILER]/ s/\[PROFILER\] \(.*\)ms : Task (project-execute new-mvifp:\(.*\):\(.*\) (  task-segment: \[\(.*\)\] )) finished.*duration \(.*\)ms./],"duration":\5}},/p
    

관련 정보