jq '
.[]|select(.accountEnabled==true)|select(.assignedPlans[].service=="exchange" and .assignedPlans[].capabilityStatus=="Enabled").proxyAddresses[]'
Ниже приведен пример json, анонимный вывод «az ad user list» (получение списка пользователей Active Directory из Azure) с удалением ненужных вещей. Выше приведена команда jq, которую я хочу использовать для извлечения адресов электронной почты, желаемый результат - «SMTP: russell.coker@example.com», напечатанный один раз, а не 9 раз. Да, я знаю, что могу передать это Unix-команде "sort -u", но я бы хотел выполнить другие json-запросы.
[
{
"accountEnabled": true,
"assignedPlans": [
{
"capabilityStatus": "Enabled",
"service": "exchange"
},
{
"capabilityStatus": "Enabled",
"service": "exchange"
},
{
"capabilityStatus": "Enabled",
"service": "exchange"
}
],
"provisionedPlans": [
{
"capabilityStatus": "Enabled",
"provisioningStatus": "Success",
"service": "exchange"
},
{
"capabilityStatus": "Enabled",
"provisioningStatus": "Success",
"service": "exchange"
},
{
"capabilityStatus": "Enabled",
"provisioningStatus": "Success",
"service": "exchange"
},
{
"capabilityStatus": "Enabled",
"provisioningStatus": "Success",
"service": "exchange"
}
],
"proxyAddresses": [
"SMTP:russell.coker@example.com"
]
},
{
"accountEnabled": true,
"assignedPlans": [
{
"capabilityStatus": "Deleted",
"service": "exchange"
},
{
"capabilityStatus": "Deleted",
"service": "OfficeForms"
}
],
"provisionedPlans": [
{
"capabilityStatus": "Deleted",
"provisioningStatus": "Success",
"service": "SharePoint"
},
{
"capabilityStatus": "Deleted",
"provisioningStatus": "Success",
"service": "exchange"
},
{
"capabilityStatus": "Deleted",
"provisioningStatus": "Success",
"service": "exchange"
}
],
"proxyAddresses": [
"smtp:a@example.com",
"smtp:b@example.com",
"SMTP:c@example.com"
]
}
]