在 bash 中将字符串转换为 JSON

Convert String to JSON in bash

我有一个字符串,其格式为长字符串(无换行符),如下所示:

<NAME1>ID1>CODE1a>CODE1b>><NAME2>ID2>CODE2a>CODE2b>><NAME3>ID3>CODE3a>CODE3b>>

想法是将此字符串转换为 JSON:

{
  "ID1": [
    "NAME1",
    "CODE1a",
    "CODE1b"
  ],
  "ID2": [
    "NAME2",
    "CODE2a",
    "CODE2b"
  ],
  "ID3": [
    "NAME3",
    "CODE3a",
    "CODE3b"
  ]
}

问题是我需要一个命令(类似于 cat testfile.txt | sed "..." | tr "..."

我尝试使用 sedtrjq,但没有成功,我完全被卡住了。 提前致谢

整个事情只用jq就可以完成,例如:

jq -R '
  sub("^<";"")
  | split(">><")
  | map(split(">"))
  | map( { (.[1]) : (.[0:1] + (.[2:] | map(select(.!="")))) } )
  | add
'