【发布时间】:2020-08-07 14:30:48
【问题描述】:
完全坚持这个。
我有这样的 JSON:
{
"create_option": "Restore",
"disk_iops_read_write": 120,
"disk_mbps_read_write": 25,
"tags": {
"Monitor": "No",
"RSVaultBackup": "2dc504bd"
}
}
和下面的jq
.|to_entries|map("nfs-0_\(.key)=\"\(.value)\"")|.[]
我已经解决了
nfs-0_create_option="Restore"
nfs-0_disk_iops_read_write="120"
nfs-0_disk_mbps_read_write="25"
nfs-0_tags="{"Monitor":"No","RSVaultBackup":"2dc504bd"}"
但 nfs-0_tags 行部分也需要采用 name=value 格式。我想结束的是这个
nfs-0_create_option="Restore"
nfs-0_disk_iops_read_write="120"
nfs-0_disk_mbps_read_write="25"
nfs-0_tags={Monitor="No", VaultBackup="2dc504bd"}
我觉得我应该能够递归地应用地图,但对于我的一生,我无法弄清楚如何实现。
有什么想法吗?
谢谢:)
编辑:
好的,我想我现在离这个越来越近了
.|.tags |= (to_entries | map("\(.key) = \(.value)"))|to_entries|map ("\(.key) = \(.value)")|.[]
我现在明白了
create_option = Restore
disk_iops_read_write = 120
disk_mbps_read_write = 25
tags = ["Monitor = No","RSVaultBackup = 2dc504bd"]
但我需要花括号 {} 中的标签行,其中键不加引号,值加引号。像这样
nfs-0_tags={Monitor="No", VaultBackup="2dc504bd"}
编辑:
我仍然希望输出看起来像这样
nfs-0_create_option="Restore"
nfs-0_disk_iops_read_write="120"
nfs-0_disk_mbps_read_write="25"
nfs-0_tags={Monitor="No", VaultBackup="2dc504bd"}
jq 运行后
【问题讨论】:
-
需要引用值吗?在您预期输出的前 3 行中,它们被引用,而最后一行则没有。
-
@dibery 是的 - 我已经编辑了帖子以反映我仍然需要引用该值