我怎样才能改进或包装我的 sed 脚本?

我怎样才能改进或包装我的 sed 脚本?

我使用 mvn build 来发出分析数据,稍后我会对其进行分析。因此,我编写了下面的 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
    

相关内容