#jq
Вопрос:
Я пытаюсь вытащить из этого списка ip_prefix
данные, основанные на том, где находится регион us-west-
, и перечислить их в формате csv. Когда я пытаюсь jq '.prefixes[] | .ip_prefix,.region | select(contains("us")?)' file.json
, я получаю только список регионов.
{ "syncToken": "15985471", "createDate": "2021-10-08-20-13-16", "prefixes": [ { "ip_prefix": "3.5.140.0/22", "region": "ap-northeast-2", "service": "AMAZON", "network_border_group": "ap-northeast-2" }, { "ip_prefix": "13.34.37.64/27", "region": "ap-southeast-4", "service": "AMAZON", "network_border_group": "ap-southeast-4" }, { "ip_prefix": "35.180.0.0/16", "region": "eu-west-3", "service": "AMAZON", "network_border_group": "eu-west-3" }, { "ip_prefix": "52.93.153.170/32", "region": "eu-west-2", "service": "AMAZON", "network_border_group": "eu-west-2" }, { "ip_prefix": "52.93.178.234/32", "region": "us-west-1", "service": "AMAZON", "network_border_group": "us-west-1" } ] }
Ответ №1:
У вас фильтры в неправильном порядке. Попробуй:
jq '.prefixes[] | select(.region|startswith("us-west")) | .ip_prefix' <your json file>
Это позволяет получить prefixes
массив, отфильтровать элементы, в которых регион начинается с «сша-запад», а затем выбрать ip_prefix
.