如何通过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
相关产品推荐
相关产品推荐

