我有一个简单的 yaml 文件,名为foo.yaml
foo:
- a
- c
bar:
- foo: bar
foo2: bar2
Run Code Online (Sandbox Code Playgroud)
我正在尝试按字母顺序向 中添加新值 ( b) foo。我可以使用 添加值+=,但它不会按字母顺序排列
$ yq '.foo += "b"' foo.yaml
foo:
- a
- c
- b
bar:
- foo: bar
foo2: bar2
Run Code Online (Sandbox Code Playgroud)
如果我使用+我可以使用sort,但我只能得到原始值。例如:
$ yq '.foo += "b"' foo.yaml
foo:
- a
- c
- b
bar:
- foo: bar
foo2: bar2
Run Code Online (Sandbox Code Playgroud)
我尝试将其设置为 bash 变量,然后将其与 一起使用=,但它显示为多行文本
$ yq '.foo + "b" | sort()' foo.yaml
- a
- b
- c
Run Code Online (Sandbox Code Playgroud)
有没有更简单的方法可以按foo字母顺序插入新值,同时保持 yaml 的其余部分完好无损?
您获得原始值的原因是您已经告诉yq要遍历“foo”。相反尝试:
yq '.foo = (.foo + "b" | sort)' file.yaml
Run Code Online (Sandbox Code Playgroud)
产量:
foo:
- a
- b
- c
bar:
- foo: bar
foo2: bar2
Run Code Online (Sandbox Code Playgroud)
解释:
免责声明:我写的是yq