我正在尝试确定使用 yq 使用 yq v4 从给定 yaml 输入打印所有键/值对的正确语法 - 所需的输出具有完整的键“路径”。使用 v3 可以实现这一点,如下所示:
$ cat << EOF | yq r -p pv - '**'
> a:
> b: foo
> c: bar
> EOF
a.b: foo
a.c: bar
Run Code Online (Sandbox Code Playgroud)
但我很难理解新语法。
任何帮助是极大的赞赏。
fly*_*lyx 10
$ cat << EOF | yq e '.. | select(. == "*") | {(path | join(".")): .} ' -\n> a:\n> b: foo\n> c: bar\n> EOF\na.b: foo\na.c: bar\nRun Code Online (Sandbox Code Playgroud)\n这是做什么的?让我们回顾一下:
\n..递归选择所有值select(. == "*")过滤标量值(即过滤掉 的值a)(path | join("."))获取路径作为数组并将元素连接起来.{\xe2\x80\xa6: .}创建一个映射,将连接的路径作为键,将它们的值作为值编辑:要获取方括号([0]等)中的序列索引,请执行以下操作
$ cat << EOF | yq e '.. | select(. == "*") | {(path | . as $x | (.[] | select((. | tag) == "!!int") |= (["[", ., "]"] | join(""))) | $x | join(".") | sub(".\\[", "[")): .} ' -\nRun Code Online (Sandbox Code Playgroud)\n这似乎应该有一个更简单的方法来做到这一点,但我不太了解,无法yq弄清楚。
| 归档时间: |
|
| 查看次数: |
4047 次 |
| 最近记录: |