在 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 "..."
)
我尝试使用 sed
、tr
、jq
,但没有成功,我完全被卡住了。
提前致谢
整个事情只用jq就可以完成,例如:
jq -R '
sub("^<";"")
| split(">><")
| map(split(">"))
| map( { (.[1]) : (.[0:1] + (.[2:] | map(select(.!="")))) } )
| add
'
我有一个字符串,其格式为长字符串(无换行符),如下所示:
<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 "..."
)
我尝试使用 sed
、tr
、jq
,但没有成功,我完全被卡住了。
提前致谢
整个事情只用jq就可以完成,例如:
jq -R '
sub("^<";"")
| split(">><")
| map(split(">"))
| map( { (.[1]) : (.[0:1] + (.[2:] | map(select(.!="")))) } )
| add
'