Ваша команда curl
запрашивает два хоста. Каждый вернет документ JSON. jq -s
добавит их вместе как две записи в массиве. Чтобы получить первую запись (, которую вы представляете как ожидаемый результат ), просто запросите .[0]
из jq
, как в
curl -s ipinfo.io 'api.ipify.org/?format=json' | jq -s '.[0]'
или просто используйте первый хост с самого начала:
curl ipinfo.io
Чтобы на самом деле объединить два документа, примените команду jq
add
к возвращаемому списку:
curl -s ipinfo.io 'api.ipify.org/?format=json' | jq -s 'add'
Обратите внимание: поскольку объект JSON не может содержать несколько ключей с одинаковым именем, любой последующий ключ заменит эквивалентный предыдущий ключ, так что, если ваш jq -s
документ
[
{
"ip": "139.162.244.103",
"hostname": "businessproservices.com",
"city": "London",
"region": "England",
"country": "GB",
"loc": "51.5142,-0.0931",
"postal": "EC2V",
"org": "AS63949 Linode, LLC"
},
{
"ip": "39.62.44.1",
"country": "UK"
}
]
тогда это будет объединено как
{
"ip": "39.62.44.1",
"hostname": "businessproservices.com",
"city": "London",
"region": "England",
"country": "UK",
"loc": "51.5142,-0.0931",
"postal": "EC2V",
"org": "AS63949 Linode, LLC"
}
при использовании jq -s add
вместо jq -s
.