jq 根据属性值(而不是键)过滤对象

问题描述 投票:0回答:1

我有这样的结构:

[
  { "name":"Genus", "value": "canis" }
  { "name":"env.VAR1", "value": "dogsdrool"
  { "name":"env.VAR2", "value": "catsrule" }
]

我想选择 name 属性值以“env”开头的对象。 (等效地,它与正则表达式

"^env\."
匹配) 然后将 name 属性值与 value 属性值连接起来,如下所示:

env.VAR1="dogsdrool"
env.VAR2="catsrule"

对于第一部分,我用 select 搞砸了,但基本上一无所获。看起来这应该不难,但它让我困惑。这不是基于键而是基于属性值的过滤。

对于第二部分,我已经有了这个,效果很好。我只是不知道如何仅过滤名称属性以

env.

开头的对象
|"\(.name) = \(.value)"
jq
1个回答
0
投票

这有效:

.[] |select(.name|test("^env"))|"\(.name) = \(.value)"
© www.soinside.com 2019 - 2024. All rights reserved.