如何改進或包裝我的 sed 腳本?

如何改進或包裝我的 sed 腳本?

我安裝了一個 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
    

相關內容