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

如何在Shell脚本中提取嵌套数组内的Name字段值

提取嵌套数组中所有Name字段的值

原始数据

listofallvms =
[
    [
        {
            "Name": "aaa"
        }
    ],
    [
        {
            "Name": "bbb"
        }
    ]
]

需求

仅输出每个Name字段的值,格式如下:

aaa
bbb

问题分析

你当前的代码存在两处问题:

  • 循环仅遍历了listofallvms[0],只能处理数组的第一个子元素,无法覆盖所有数据;
  • jq .[].[]的写法未精准定位到Name字段,且缺少-r参数(用于输出无引号的原始字符串)。

解决方案

无需使用bash循环,直接用jq即可一次性处理整个嵌套结构:

echo "$listofallvms" | jq -r '.[][].Name'

命令解释:

  • .[][]:先遍历外层数组的每个子数组,再遍历子数组内的每个对象;
  • .Name:提取每个对象中的Name字段值;
  • -r:让jq输出原始字符串,而非带双引号的JSON格式字符串。

如果listofallvms是bash数组,需先将其转换为标准JSON格式再处理:

printf '%s\n' "${listofallvms[@]}" | jq -s '.[][].Name'

内容的提问来源于stack exchange,提问作者Dhananjay Gahiwade

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:10:41