yq处理多文档YAML时如何移除输出结果中的---分隔符
解决方案
方法1:使用内置参数(推荐)
yq 4.x版本内置了--no-doc-separators参数(可简写为-N),专门用于关闭多文档输出时的---分隔符,修改后的命令如下:
echo '---\nfoo: foo\n---\nfoo: foo\n' | yq eval --no-doc-separators '.foo' -
使用简写参数的版本:
echo '---\nfoo: foo\n---\nfoo: foo\n' | yq eval -N '.foo' -
方法2:表达式处理(兼容所有yq4版本)
如果使用的版本不支持上述参数,也可以通过YQL表达式将所有结果收集到数组后展开,自动省略分隔符:
echo '---\nfoo: foo\n---\nfoo: foo\n' | yq eval '[.foo] | .[]' -
原理解释
默认情况下yq处理多文档YAML输入时,输出的多份结果会自动用---分隔,两种方案分别通过参数配置、表达式结构调整的方式关闭了分隔符输出,最终得到无分隔的连续结果。
内容的提问来源于stack exchange,提问作者mellow-yellow
相关产品推荐
相关产品推荐

