JQ-将值附加到特定值的JSON数组格式
我正在努力做到这一点:JQ-将值附加到特定值的JSON数组格式,json,bash,jq,Json,Bash,Jq,我正在努力做到这一点: [ ["John Black",[ ["Lorem ipsum dolor sit amet.",27], ["Ut tempus lectus ut mi.",23] ]], ["Peter Pan",[ ["Quisque pulvinar odio.",22], ["Nec ut lorem quis interdum elit.",32] ]], [
[
["John Black",[
["Lorem ipsum dolor sit amet.",27],
["Ut tempus lectus ut mi.",23]
]],
["Peter Pan",[
["Quisque pulvinar odio.",22],
["Nec ut lorem quis interdum elit.",32]
]],
["Gary Halbert",[
["Placerat aliquam.",17]
]],
["Richard Gere",[
["Porttitor commodo fermentum.",28]
]]
]
到现在为止,我得到的是:
export A=$(cat <<'EOL'
[
["John Black",["Lorem ipsum dolor sit amet.",27]],
["Peter Pan",["Quisque pulvinar odio.",22]],
["John Black",["Ut tempus lectus ut mi.",23]],
["Gary Halbert",["Placerat aliquam.",17]],
["Peter Pan",["Nec ut lorem quis interdum elit.",32]],
["Richard Gere",["Porttitor commodo fermentum.",28]]
]
EOL
)
echo "$A" | jq 'map({(.[0]): .[1]}) | add'
我正在使用jq-1.5。
有什么想法吗?谢谢。Couchdb引擎是仅附加的,这意味着每个文档都将由Couchdb附加到文件管理器中,并且每个文件都与数据库相关 要正确使用,请考虑如何避免在同一文档中进行更新,请记住所有修订都将被存储 我对每个文件的建议
{
“姓名”:“约翰·布莱克”,
“条目”:[
{
“测试”:“Lorem ipsum dolor sit amet.”,
“价值”:27
},
{
“文本”:“我的时间和方向。”,
“价值”:23
}
],
“类型”:“用户”
}
这是减速器的适当用例。以下大部分内容与连接共享键下的项无关,而是与将它们放入所需的嵌套列表形式有关:
jq -n '[
inputs |
reduce .[] as $item ({}; .[$item[0]] += [$item[1]]) |
to_entries |
.[] |
[.key, .value]
]' <<<"$A"
因此,使用CouchDB,如果我需要向作者添加其他引用,我必须阅读JSON对象/数组,进行添加并覆盖整个文档?是的,这将生成一个修订版,它是文档的副本。之前的问题版本是否引用了CouchDB?(由于当前版本只询问jq,我很好奇在这里看到这个)。问题太大了,所以我编辑了它。就我所知,在我的情况下,与CouchDB合作并没有太多收获。事实上,我决定将JSON数组保存到一个gunziped文本文件中,并将其读回JQ以供后续版本使用会更快;它不必要地使用了有限的资源(环境变量存储在用于参数向量的相同空间中,因此当您导出shell变量时,您正在减少该shell所有子进程的最大命令行长度)。伙计,您从哪里了解到的?如果那是一本书,我也想要…@罗杰:看看有没有这方面的书或课程,我想知道@罗杰:你在电影中找不到如此先进的技术,但是电影涵盖了一切——尽管是以一种浓缩的形式,可能不会让可能性变得显而易见。然而,手册中确实有一些例子,还有一个例子。最后,已经有很多很好的答案了(这一个肯定合格)。
jq -n '[
inputs |
reduce .[] as $item ({}; .[$item[0]] += [$item[1]]) |
to_entries |
.[] |
[.key, .value]
]' <<<"$A"
[
["John Black", [["Lorem ipsum dolor sit amet.", 27], ["Ut tempus lectus ut mi.",23]]],
["Peter Pan", [["Quisque pulvinar odio.",22], ["Nec ut lorem quis interdum elit.", 32]]],
["Gary Halbert", [["Placerat aliquam.", 17]]],
["Richard Gere", [["Porttitor commodo fermentum.", 28]]]
]