
私は、後で分析したいプロファイリングデータを出力するために、mvn buildをインストルメントしました。そこで、プロファイラの出力からjsonデータを生成するために、以下のsedスクリプトを作成しました。スクリプトを次のように呼び出します。
cat some.log | sed -nf thescript.sed > some.json
これは、json オブジェクト (「プロジェクト」) のネストされたリストを生成しますが、各リストは「,」で終了します。
これから有効な json ファイルを作成するには、お気に入りのエディターで次の手順を実行します。
- すべてを1つの線に結合する
- コンテンツ全体の先頭に「{\"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