JQ命令添加到地图上

发布于 2025-02-12 19:42:47 字数 1111 浏览 0 评论 0原文

是否有使用JQ添加到此类型的地图上的命令? 使用键(即,VM1,VM2,VM3)附加一系列地图

注意:我在JSON文件中有一个现有的vm_map {},我想添加到vm_map中,

这是我的new_json.json文件,我的new_json.json文件

{
  "gcs_config": [
    {
      "bucket_name": "somebucket",
      "bucket_readers": [],
      "bucket_writers": []
    }
  ],
  "label_application": "someapp",
  "label_environment": "dev",
  "lits_vm_zone": "somezone",
  "project_id": "someproject",
  "region": "someregion",
  "storage_bucket_required": true,
  "vm_map" : {}
}

预期:使用jq添加添加来添加到VM_MAPS地图上。我将拥有一个空的vm_map,每次运行时,我都会添加斧头量的新条目。

{
  "gcs_config": [
    {
      "bucket_name": "somebucket",
      "bucket_readers": [],
      "bucket_writers": []
    }
  ],
  "label_application": "someapp",
  "label_environment": "dev",
  "lits_vm_zone": "zone-a",
  "project_id": "someproject",
  "region": "someregion",
  "storage_bucket_required": true,
    "vm_map": {
    "vm1": {
      "host": "vm1",
      "network": "10.1.1.1",
      "name": "vm1"
    },
    "vm2": {
      "host": "123",
      "network": "10.1.12",
      "name": "vm2"
    }
  }
}


Is there a command to use jq to add onto this type of map?
append an array of maps using keys (ie, vm1, vm2, vm3)

Note: I have an existing vm_map {} in a json file and i want to add to the vm_map

this is my new_json.json file

{
  "gcs_config": [
    {
      "bucket_name": "somebucket",
      "bucket_readers": [],
      "bucket_writers": []
    }
  ],
  "label_application": "someapp",
  "label_environment": "dev",
  "lits_vm_zone": "somezone",
  "project_id": "someproject",
  "region": "someregion",
  "storage_bucket_required": true,
  "vm_map" : {}
}

expected: using jq to add onto vm_maps map. I will have an empty vm_map and each time it runs, i will add a x amount of new entries.

{
  "gcs_config": [
    {
      "bucket_name": "somebucket",
      "bucket_readers": [],
      "bucket_writers": []
    }
  ],
  "label_application": "someapp",
  "label_environment": "dev",
  "lits_vm_zone": "zone-a",
  "project_id": "someproject",
  "region": "someregion",
  "storage_bucket_required": true,
    "vm_map": {
    "vm1": {
      "host": "vm1",
      "network": "10.1.1.1",
      "name": "vm1"
    },
    "vm2": {
      "host": "123",
      "network": "10.1.12",
      "name": "vm2"
    }
  }
}


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

木緿 2025-02-19 19:42:47

您描述的文件不是有效的JSON。我假设您的意思是

{
  "vm_map": {
    "vm1": {
      "host": "vm1",
      "network": "xxxxx",
      "name": "xxxxxxx"
    },
    "vm2": {
      "host": "vm2",
      "network": "xxxxx",
      "name": "xxxxxxx"
    }
  }
}

您可以使用以下方式:

jq \
   --arg VMHOST     "$VMHOST"     \
   --arg NETWORK_IP "$NETWORK_IP" \
   --arg VM_NAME    "$VM_NAME"    \
'
   .vm_map[ $VMHOST ] = {
      host:    $VMHOST,
      network: $NETWORK_IP,
      name:    $VM_NAME
   }
'

The file you describe is not valid JSON. I'm assuming you mean

{
  "vm_map": {
    "vm1": {
      "host": "vm1",
      "network": "xxxxx",
      "name": "xxxxxxx"
    },
    "vm2": {
      "host": "vm2",
      "network": "xxxxx",
      "name": "xxxxxxx"
    }
  }
}

You can use this:

jq \
   --arg VMHOST     "$VMHOST"     \
   --arg NETWORK_IP "$NETWORK_IP" \
   --arg VM_NAME    "$VM_NAME"    \
'
   .vm_map[ $VMHOST ] = {
      host:    $VMHOST,
      network: $NETWORK_IP,
      name:    $VM_NAME
   }
'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文