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

如何通过shell脚本将properties中map列表作为值写入yaml对应key

实现方案

可用shell转换脚本

#!/bin/bash
awk '
# 处理跨行配置:行尾是逗号则自动拼接下一行内容
{
    line = $0
    while (sub(/,$/, "", line)) {
        getline nextline
        line = line nextline
    }
    $0 = line
}
# 匹配所有键值对配置
/^[a-zA-Z0-9_]+=/ {
    split($0, kv, "=")
    key = kv[1]
    val = substr($0, length(key)+2)
    
    # 识别包含{}的列表类配置
    if (val ~ /{.*}/) {
        printf "%s:\n", key
        # 拆分所有{}包裹的map块
        n = split(val, blocks, /[{}]/)
        for (i=2; i<=n; i+=2) {
            block = blocks[i]
            if (block ~ /^[ \t,]*$/) continue
            printf "  -\n"
            # 拆分块内的单个键值对
            m = split(block, kvs, /,/)
            for (j=1; j<=m; j++) {
                kv_pair = kvs[j]
                gsub(/^[ \t]+|[ \t]+$/, "", kv_pair)
                if (kv_pair == "") continue
                split(kv_pair, p, /=/)
                k = p[1]
                v = p[2]
                gsub(/^[ \t]+|[ \t]+$/, "", k)
                gsub(/^[ \t]+|[ \t]+$/, "", v)
                printf "    %s: \"%s\"\n", k, v
            }
        }
    } else {
        # 普通字符串配置直接转换格式
        printf "%s: %s\n", key, val
    }
}' $1

使用方法

  • 将脚本保存为prop2yaml.sh
  • 赋予执行权限:chmod +x prop2yaml.sh
  • 执行转换:./prop2yaml.sh 输入.properties > 输出.yaml

脚本会自动处理跨行配置、普通键值转换、列表结构解析,输出完全符合你要求的yaml格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:36:08