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

如何使用yq去除YAML数组中的连字符(含两款yq方案)

解决YAML数组转bash数组时去除元素前连字符的方案

Mike Farrah的yq v4.31.2 实现方案

你之前用yq -r '.'会输出YAML数组的原始格式,导致每行元素前都带-。要去掉连字符,只需让yq遍历数组每个元素并输出原始值,把yq的查询表达式改成.[]即可:

yaml='- this - is - a - yaml - array'
declare -a arr;
readarray -t arr < <(echo "$yaml" | yq -r '.[]');
echo ${arr[@]}

执行后bash数组的元素就不再带-,输出结果为this is a yaml array。

Andrey Kislyuk的yq 实现方案

Andrey的yq(Python版本)逻辑类似,同样通过遍历数组元素输出纯内容,替换查询表达式为.[]即可:

yaml='- this - is - a - yaml - array'
declare -a arr;
readarray -t arr < <(echo "$yaml" | yq -r '.[]');
echo ${arr[@]}

该版本yq会直接输出每个数组元素的字符串内容,readarray读取后存入bash数组的元素自然就没有前导连字符了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 05:22:11