Мне нужно получить список изображений амазонки, и одно из значений, которые мне нужно показать, - это логическое значение (true / false).
Например, я могу извлечь идентификаторы изображений из списка, который мне нужно обработать без проблем:
cat oneimage.json | jq -r '.Images[] | [.ImageId] | @csv'
"ami-000bd263d51e443f2"
Но следующее значение, которое мне нужно добавить в список, это значение true / falseи jq задыхается от следующей команды:
cat oneimage.json | jq -r '.Images[] | [.ImageId, ([.BlockDeviceMappings[].Ebs.DeleteOnTermination] | join(","))] | @csv'
jq: error (at <stdin>:89): string ("") and boolean (true) cannot be added
JSON содержит список томов.Значение «DeleteOnTermination» будет уникальным для каждого тома в списке и должно входить в одну и ту же «ячейку» в формате csv.
Цель состоит в том, чтобы вывести csv в электронную таблицу и иметь все значения DeleteOnTermination, разделенные запятой в одной строке в ячейке для каждого изображения.
Вот json I'mиспользуя для этого теста:
{
"Images": [{
"VirtualizationType": "hvm",
"Description": "AB-P-RIDD-TRAN05-12-13-2018",
"Hypervisor": "xen",
"ImageId": "ami-000bd263d51e443f2",
"State": "available",
"BlockDeviceMappings": [{
"DeviceName": "/dev/sda1",
"Ebs": {
"SnapshotId": "snap-0f1076dce3103833f",
"DeleteOnTermination": true,
"VolumeType": "gp2",
"VolumeSize": 100,
"Encrypted": false
}
},
{
"DeviceName": "/dev/sdi",
"Ebs": {
"SnapshotId": "snap-0c7d71a9d3887a048",
"DeleteOnTermination": true,
"VolumeType": "gp2",
"VolumeSize": 5,
"Encrypted": false
}
},
{
"DeviceName": "/dev/sdg",
"Ebs": {
"SnapshotId": "snap-00402196b9e023a72",
"DeleteOnTermination": true,
"VolumeType": "gp2",
"VolumeSize": 10,
"Encrypted": false
}
},
{
"DeviceName": "/dev/sdk",
"Ebs": {
"SnapshotId": "snap-05f65a62735de2846",
"DeleteOnTermination": true,
"VolumeType": "gp2",
"VolumeSize": 20,
"Encrypted": false
}
},
{
"DeviceName": "/dev/sdj",
"Ebs": {
"SnapshotId": "snap-0d350170b9d5c62bb",
"DeleteOnTermination": true,
"VolumeType": "gp2",
"VolumeSize": 40,
"Encrypted": false
}
},
{
"DeviceName": "/dev/sdh",
"Ebs": {
"SnapshotId": "snap-04679d09d89609e79",
"DeleteOnTermination": true,
"VolumeType": "gp2",
"VolumeSize": 30,
"Encrypted": false
}
},
{
"DeviceName": "/dev/sdf",
"Ebs": {
"SnapshotId": "snap-0b5f861fd93da6b20",
"DeleteOnTermination": true,
"VolumeType": "gp2",
"VolumeSize": 5,
"Encrypted": false
}
}
],
"Architecture": "x86_64",
"ImageLocation": "123456789191/AB-P-RIDD-TRAN05-12-13-2018",
"RootDeviceType": "ebs",
"OwnerId": "123456789191",
"RootDeviceName": "/dev/sda1",
"CreationDate": "2018-12-14T01:39:31.000Z",
"Public": false,
"ImageType": "machine",
"Name": "AB-P-RIDD-TRAN05-12-13-2018"
}]
}
Как получить значение DeleteOnTermination в одной ячейке csv, разделенных запятыми с одним значением DeleteOnTermination для каждого тома?