jq - 在 for 循环中,创建一个新数组,然后追加 key/value 对
jq - in for loop, create a single new array, then append key/value pairs
我需要遍历一个数组(AWS 实例 ID'),然后拉出标签并使用 jq 将它们添加到一个数组中。
我有变量来定义我的需求。在这种情况下:
VolumeId
Tag1Value
Tag2Value
Tag3Value
当我在 for 循环中迭代时,它们会发生变化。我知道如何创建一个新数组:
jq -n --arg v "$VolumeId" '[{"VolumeId": $v}]'
然而,这每次都会创建一个新的 JSON 数组。我需要它创建一次,然后在循环过程中附加到它。
我正在寻找的输出是新创建的 JSON 数组:
[
{
"VolumeId": $VolumeId,
"Tag1": $Tag1Value,
"Tag2": $Tag2Value,
"Tag3": $Tag3Value
},
{
"VolumeId": $VolumeId,
"Tag1": $Tag1Value,
"Tag2": $Tag2Value,
"Tag3": $Tag3Value
},
{
"VolumeId": $VolumeId,
"Tag1": $Tag1Value,
"Tag2": $Tag2Value,
"Tag3": $Tag3Value
}
]
非常感谢任何帮助。
这是一个示例,显示了如何将值流(此处为数组流)组合成 JSON 对象数组:
(cat << EOF
["VolumeId1", "Tag1Value1", "Tag2Value1", "Tag3Value1"]
["VolumeId2", "Tag1Value2", "Tag2Value2", "Tag3Value2"]
["VolumeId3", "Tag1Value3", "Tag2Value3", "Tag3Value3"]
EOF
) | jq -s 'map( {VolumeId: .[0], Tag1Value: .[1], Tag2Value: .[2], Tag3Value: .[3] }) '
输出:
[
{
"VolumeId": "VolumeId1",
"Tag1Value": "Tag1Value1",
"Tag2Value": "Tag2Value1",
"Tag3Value": "Tag3Value1"
},
{
"VolumeId": "VolumeId2",
"Tag1Value": "Tag1Value2",
"Tag2Value": "Tag2Value2",
"Tag3Value": "Tag3Value2"
},
{
"VolumeId": "VolumeId3",
"Tag1Value": "Tag1Value3",
"Tag2Value": "Tag2Value3",
"Tag3Value": "Tag3Value3"
}
]
我需要遍历一个数组(AWS 实例 ID'),然后拉出标签并使用 jq 将它们添加到一个数组中。
我有变量来定义我的需求。在这种情况下:
VolumeId
Tag1Value
Tag2Value
Tag3Value
当我在 for 循环中迭代时,它们会发生变化。我知道如何创建一个新数组:
jq -n --arg v "$VolumeId" '[{"VolumeId": $v}]'
然而,这每次都会创建一个新的 JSON 数组。我需要它创建一次,然后在循环过程中附加到它。
我正在寻找的输出是新创建的 JSON 数组:
[
{
"VolumeId": $VolumeId,
"Tag1": $Tag1Value,
"Tag2": $Tag2Value,
"Tag3": $Tag3Value
},
{
"VolumeId": $VolumeId,
"Tag1": $Tag1Value,
"Tag2": $Tag2Value,
"Tag3": $Tag3Value
},
{
"VolumeId": $VolumeId,
"Tag1": $Tag1Value,
"Tag2": $Tag2Value,
"Tag3": $Tag3Value
}
]
非常感谢任何帮助。
这是一个示例,显示了如何将值流(此处为数组流)组合成 JSON 对象数组:
(cat << EOF
["VolumeId1", "Tag1Value1", "Tag2Value1", "Tag3Value1"]
["VolumeId2", "Tag1Value2", "Tag2Value2", "Tag3Value2"]
["VolumeId3", "Tag1Value3", "Tag2Value3", "Tag3Value3"]
EOF
) | jq -s 'map( {VolumeId: .[0], Tag1Value: .[1], Tag2Value: .[2], Tag3Value: .[3] }) '
输出:
[
{
"VolumeId": "VolumeId1",
"Tag1Value": "Tag1Value1",
"Tag2Value": "Tag2Value1",
"Tag3Value": "Tag3Value1"
},
{
"VolumeId": "VolumeId2",
"Tag1Value": "Tag1Value2",
"Tag2Value": "Tag2Value2",
"Tag3Value": "Tag3Value2"
},
{
"VolumeId": "VolumeId3",
"Tag1Value": "Tag1Value3",
"Tag2Value": "Tag2Value3",
"Tag3Value": "Tag3Value3"
}
]