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

如何使用Shell工具将扁平化YAML文件转换为标准嵌套结构?

YAML反扁平化Shell实现方案

方案1:使用yq工具(推荐,稳定兼容全场景)

yq是专门用于YAML处理的轻量命令行工具,主流Linux/macOS发行版均可直接通过软件源安装,单命令即可完成转换:

  • 安装yq(v4及以上版本):
    • Debian/Ubuntu:apt install yq
    • macOS:brew install yq
  • 执行转换命令:
    yq -o yaml 'explode(.)' 输入扁平化文件.yml > 输出嵌套文件.yml
    

直接运行即可得到符合缩进要求的标准嵌套YAML,自动处理特殊字符、转义等边界场景。

方案2:纯Bash脚本实现(无额外依赖)

如果环境无法安装外部工具,可以使用下面的轻量Bash脚本,仅依赖系统自带的awk工具:

  1. 保存以下内容为unflatten_yaml.sh:
    #!/bin/bash
    awk -F': ' '
    {
        n = split($1, keys, /\./)
        for (i=1; i<=n; i++) {
            indent = ""
            for (j=1; j<i; j++) indent = indent "  "
            if (i == n) {
                print indent keys[i] ": " $2
            } else {
                key_path = ""
                for (k=1; k<=i; k++) key_path = key_path "." keys[k]
                if (!printed[key_path]) {
                    print indent keys[i] ":"
                    printed[key_path] = 1
                }
            }
        }
    }' "$1"
    
  • 给脚本加执行权限:chmod +x unflatten_yaml.sh
  • 运行转换:
    ./unflatten_yaml.sh 输入扁平化文件.yml > 输出嵌套文件.yml
    

注意:该脚本适用于简单场景,值中不包含冒号、换行等特殊符号的情况,复杂YAML结构仍建议使用yq处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:21:00