
我安裝了一個 mvn 建置來發出分析數據,稍後我想對其進行分析。因此,我製作了下面的 sed 腳本,從探查器輸出產生 json 資料。我用以下命令呼叫腳本
cat some.log | sed -nf thescript.sed > some.json
它產生一個 json 物件(“項目”)的嵌套列表,但每個列表都以“,”結尾。
為了從中建立一個有效的 json 文件,我在我最喜歡的編輯器中執行以下步驟。
- 將所有內容連接到一行
- 透過在整個內容前面加上“{\”list\”:[”並將“]}”插入包裝物件。
- 將所有出現的“, ]”(錯誤終止清單)替換為“]”
- 在每個項目後插入一個換行符,以避免因行過長而導致 JSON 解析崩潰。
我目前手動執行這些步驟,也希望將此腳本編寫下來。
- 我怎麼能讓 sed 腳本產生有效的 json (即換行僅有的當我想要它們時,或不要放置終止“,”)
或者如何在另一個過濾器中編寫上述步驟的腳本?
/[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