короткий ответ
добавьте
[] | sort_by(@, &[3])
в конце выражения.Скобки ([]
) сгладят структуру, sort_by(...)
отсортирует результат (таблица из четырех столбцов) по четвертому столбцу.Полный запрос будет:
--query 'Reservations[*].Instances[*].[LaunchTime,InstanceId,PrivateIpAddress,Tags[?Key==`Name`] | [0].Value][] | sort_by(@, &[3])'
длинный ответ
проверка текущего результата запроса
Согласно describe-instances
документам , структуревывода describe-instances
выглядит следующим образом:
{
"Reservations": [
{
"Instances": [
{
"LaunchTime": "..LaunchTime..",
"InstanceId": "R1I1",
"PrivateIpAddress": "..PrivateIpAddress..",
"Tags": [{"Key": "Name", "Value": "foo"}]
},
{
"LaunchTime": "..LaunchTime..",
"InstanceId": "R1I2",
"PrivateIpAddress": "..PrivateIpAddress..",
"Tags": [{"Key": "Name", "Value": "baz"}]
}
]
},
{
"Instances": [
{
"LaunchTime": "..LaunchTime..",
"InstanceId": "R2I1",
"PrivateIpAddress": "..PrivateIpAddress..",
"Tags": [{"Key": "Name", "Value": "bar"}]
}
]
}
]
}
Использование исходного запроса
--query 'Reservations[*].Instances[*].[LaunchTime,InstanceId,PrivateIpAddress,Tags[?Key==`Name`] | [0].Value]'
приведет к выводу
[
[
[
"..LaunchTime..",
"R1I1",
"..PrivateIpAddress..",
"foo"
],
[
"..LaunchTime..",
"R1I2",
"..PrivateIpAddress..",
"baz"
]
],
[
[
"..LaunchTime..",
"R2I1",
"..PrivateIpAddress..",
"bar"
]
]
]
сглаживания результата запроса
В приведенном выше результате запроса вы видите, что вы получаете список таблиц ([[{},{}],[{}]]
).Я предполагаю, что вместо этого вы хотите одну не вложенную таблицу ([{},{},{}]
).Для этого просто добавьте []
в конце вашего запроса, то есть
--query 'Reservations[*].Instances[*].[LaunchTime,InstanceId,PrivateIpAddress,Tags[?Key==`Name`] | [0].Value][]'
Это сгладит структуру, что приведет к
[
[
"..LaunchTime..",
"R1I1",
"..PrivateIpAddress..",
"foo"
],
[
"..LaunchTime..",
"R1I2",
"..PrivateIpAddress..",
"baz"
],
[
"..LaunchTime..",
"R2I1",
"..PrivateIpAddress..",
"bar"
]
]
Теперь пришло время отсортировать таблицу.
сортировка таблицы
При использовании sort_by
не забывайте добавлять выражение к &
(амперсанд).Таким образом, вы указываете ссылку на это выражение, которое затем передается в sort_by
.
пример: data | sort_by(@, &@)
эквивалентно data | sort(@)
.
TagName
в созданной вами таблице ([LaunchTime,InstanceId,PrivateIpAddress,TagName]
) - четвертый столбец.Вы можете получить этот столбец, передав таблицу в выражение [3]
:
TableExpression | [3]
Но вместо этого вы хотите отсортировать таблицу по четвертому столбцу.Вы можете сделать это следующим образом:
TableExpression | sort_by(@, &[3])
, и в результате запрос будет:
--query 'Reservations[*].Instances[*].[LaunchTime,InstanceId,PrivateIpAddress,Tags[?Key==`Name`][] | [0].Value] | sort_by(@, &[3])'
Результат запроса:
[
[
"..LaunchTime..",
"R2I1",
"..PrivateIpAddress..",
"bar"
],
[
"..LaunchTime..",
"R1I2",
"..PrivateIpAddress..",
"baz"
],
[
"..LaunchTime..",
"R1I1",
"..PrivateIpAddress..",
"foo"
]
]