这可能与我发布的另一个问题有关: yq (GO/Mike Farah) 递归地唯一化所有数组 https://stackoverflow.com/questions/73746733/yq-go-mike-farah-uniquify-all-arrays-recursively
迈克·法拉赫yq
提供文档排序数组 https://mikefarah.gitbook.io/yq/operators/sort但我无法弄清楚如何将其应用于嵌套更深的列表
Input
classes:
driver:
fields:
- height
- weight
- age
vehicle:
fields:
- model
- manufacturer
- color
- year
所需输出
classes:
driver:
fields:
- age
- height
- weight
vehicle:
fields:
- color
- manufacturer
- model
- year
天真地尝试全局排序
cat to_sort.yaml | yq 'sort'
错误:路径 [] 处的节点不是数组(它是一个 !!map)
如果需要争论,我不知道该提供什么。我不想只对一个显式路径进行排序,但我确实尝试过:
cat to_sort.yaml | yq 'sort(classes.driver.fields)'
错误:1:6:输入文本“classes.driver.f...”无效
我见过一些yq
必须首先执行选择操作的示例,但我不知道在这种情况下要尝试什么。
yq e '(... | select(type == "!!seq")) |= sort' input
将递归循环所有值,并且select() https://mikefarah.gitbook.io/yq/operators/select那些有type
!!seq
并更新(|=
)那些有sort
.
将 OP 的输入应用到该过滤器会得到:
classes:
driver:
fields:
- age
- height
- weight
vehicle:
fields:
- color
- manufacturer
- model
- year
-
...
: 递归下降 https://mikefarah.gitbook.io/yq/operators/recursive-descent-glob#match-values-and-map-keys-form-...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)