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

