Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 使用jq获取键的子集并将输出包装到列表_Json_Jq - Fatal编程技术网

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@JaviOverflow
map(.k1{nk1})
??