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

如何用jq提取Alias Items并与现有结果合并为单行输出?

修改jq命令提取CloudFront别名信息

现有如下jq命令及JSON数据:

jq '.DistributionList.Items[] | select(.Aliases.Items != null) | .Id + "," + .DomainName' << EOF
{
"DistributionList": {
    "Items": [
        {
        "Id": "EG3MOA",
        "Status": "Deployed",
        "LastModifiedTime": "2022-12-03T19:32:35.007000+00:00",
        "DomainName": "a***.cloudfront.net",
            "Aliases": {
                "Quantity": 1,
                "Items": [
                "a.domain.tld",
                "b.domain.tld"
                ]
            }
        },
        {
        "Id": "EG3MOB",
        "Status": "Deployed",
        "LastModifiedTime": "2022-12-03T19:32:35.007000+00:00",
        "DomainName": "b***.cloudfront.net",
            "Aliases": {
                "Quantity": 1,
                "Items": [
                "c.domain.tld",
                "d.domain.tld"
                ]
            }
        }
    ]
    }
}
EOF

该命令当前输出为:

"EG3MOA,a***.cloudfront.net"
"EG3MOB,b***.cloudfront.net"

若要同时提取别名列表,得到如下格式的单行输出:

"EG3MOA,a***.cloudfront.net,'a.domain.tld,b.domain.tld'"
"EG3MOB,b***.cloudfront.net,'c.domain.tld,d.domain.tld'"

可以修改jq命令为:

jq '.DistributionList.Items[] | select(.Aliases.Items != null) | "\(.Id),\(.DomainName),'\''\(.Aliases.Items | join(","))'\''"' << EOF
{
"DistributionList": {
    "Items": [
        {
        "Id": "EG3MOA",
        "Status": "Deployed",
        "LastModifiedTime": "2022-12-03T19:32:35.007000+00:00",
        "DomainName": "a***.cloudfront.net",
            "Aliases": {
                "Quantity": 1,
                "Items": [
                "a.domain.tld",
                "b.domain.tld"
                ]
            }
        },
        {
        "Id": "EG3MOB",
        "Status": "Deployed",
        "LastModifiedTime": "2022-12-03T19:32:35.007000+00:00",
        "DomainName": "b***.cloudfront.net",
            "Aliases": {
                "Quantity": 1,
                "Items": [
                "c.domain.tld",
                "d.domain.tld"
                ]
            }
        }
    ]
    }
}
EOF

关键修改说明:

  • 使用jq的字符串插值语法"\(.字段名)"替代传统字符串拼接,让代码更简洁易读
  • 通过.Aliases.Items | join(",")将别名数组转换为逗号分隔的字符串
  • 在bash环境中用'\''插入单引号,确保输出中的别名列表被单引号包裹

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 18:05:38