Json 使用jq获取键的子集并将输出包装到列表
假设我们有以下记录:Json 使用jq获取键的子集并将输出包装到列表,json,jq,Json,Jq,假设我们有以下记录: [ {"k1": "v1", "k2": "v2"}, {"k1": "v1", "k2": "v2"}, {"k1": "v1", "k2": "v2"} ] 我们只想保留一部分键,比如k1 我们必须执行什么操作才能获得以下输出 [ {"k1": "v1"}, {"k1": "v1"}, {"k1": "v1"} ] 我尝试过做jq.[].{“k1”:.k1}'但它返回 {"k1": "v1"} {"k1": "v1"} {"k1": "v1"} 还尝试了执行jq.
[
{"k1": "v1", "k2": "v2"},
{"k1": "v1", "k2": "v2"},
{"k1": "v1", "k2": "v2"}
]
我们只想保留一部分键,比如k1
我们必须执行什么操作才能获得以下输出
[
{"k1": "v1"},
{"k1": "v1"},
{"k1": "v1"}
]
我尝试过做jq.[].{“k1”:.k1}'
但它返回
{"k1": "v1"}
{"k1": "v1"}
{"k1": "v1"}
还尝试了执行jq.[].{“k1”:.k1}'|jq'[inputs].
,但由于某些原因,它删除了第一行
[
{"k1": "v1"},
{"k1": "v1"}
]
使用
映射
,它将过滤器应用于数组的所有元素
$ jq 'map({k1})' file
[
{
"k1": "v1"
},
{
"k1": "v1"
},
{
"k1": "v1"
}
]
你很接近
jq'[.]|{“k1”:.k1}]
或者,如果使用输入
,则需要-n
参数来阻止第一个被删除(因为它被消费为
)。我确信我们已经有了重复的内容。您能更详细地解释一下-n
标志的作用吗?-n
使
为空,而不是第一次读取输入,从而使第一次输入在输入中仍然可用。顺便说一句,如果您有嵌套的大小写,这需要包括在问题中。在这种情况下,您可能应该按原样接受@oguzismail的答案(只要它对您最初提出的问题是正确的),并提出一个新的问题,该问题描述了您试图更全面地处理的输入集。如何使用map为嵌套键或数组编制索引?图像您有{“k1”:{“nk1”:“nv1”,“nk2”:“nv2”},k2:“v2”},
作为记录,您希望获得k1.nk1
-我尝试了'map({k1.nk1})
,但它不起作用-对于在其中有数组的情况也是如此k1@JaviOverflowmap(.k1{nk1})
??