jq 更新 key:value 对象并在开头匹配字符串

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

我需要更新以下 json 文件值,其中键与子字符串匹配。 样本.json

{
"A": "a"
"re": {
  "jok/pok": ^20.0,
  "sok/dok": ^23.0,
  "jok/ssd": ^32.0
}
}

现在我需要将

-dev
附加到那些键以
jok
开头的键/值。

{
"A": "a"
"re": {
  "jok/pok": ^20.0-dev,
  "sok/dok": ^23.0,
  "jok/ssd": ^32.0-dev
}
}

我知道我缺少一些非常简单的解决方案。

json string bash jq
1个回答
1
投票

假设您的输入实际上是格式正确且有效的 JSON:

{
  "A": "a",
  "re": {
    "jok/pok": "^20.0",
    "sok/dok": "^23.0",
    "jok/ssd": "^32.0"
  }
}

以下 jq 程序生成所需的输出:

.re |= with_entries(select(.key|startswith("jok")).value += "-dev")

输出:

{
  "A": "a",
  "re": {
    "jok/pok": "^20.0-dev",
    "sok/dok": "^23.0",
    "jok/ssd": "^32.0-dev"
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.