You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用jq拼接JSON字段 输出域名与第二个IPv4地址组合结果

报错原因

你之前写的命令索引位置不对:
.networks.v4[].ip_address[1] 的执行逻辑是先遍历v4数组的所有元素,取出每个元素里的ip_address字符串,再尝试按下标1取字符串的第二个字符——jq不支持对字符串用数字下标做这种取值操作,所以直接抛出了Cannot index string with number的错误。
你真正要做的是先选中v4数组里下标为1的元素(数组下标从0开始计数,第二个元素对应下标1,就是存着59.89.8.8的那个对象),再读取这个对象的ip_address字段,不是对已经取出来的IP字符串做索引。

正确命令

执行下面的命令就能直接得到你要的格式结果:

cat ./droplet_list.json | jq -r '.[] | "\(.name) : \(.networks.v4[1].ip_address)"'

执行后输出为:

intranet.site.com : 59.89.8.8
参数说明
  • -r 是原始输出参数,输出的内容不会带JSON格式的双引号,直接返回纯文本
  • .networks.v4[1] 直接定位到v4数组的第二个元素,避免遍历出所有IP
  • \(字段名) 是jq内置的字符串插值语法,可以直接把字段值拼接到你定义的格式模板里,刚好匹配你要的域名 : IP的输出格式
  • 命令最前面的.[]会自动遍历最外层数组的所有 droplet 条目,如果后续你在JSON里加了其他服务器,命令不需要修改就能批量输出所有条目的对应结果。

内容的提问来源于stack exchange,提问作者Rostyslav Malenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 17:25:04