这可能与我发布的另一个问题有关:yq (GO/Mike Farah) uniquify all arrays recursively
Mike Farah 的yq
提供了sorting arrays的文档,但我无法确定如何将其应用于嵌套更深的列表
输入
cles:
driver:
fields:
- height
- weight
- age
vehicle:
fields:
- model
- manufacturer
- color
- year
所需输出
cles:
driver:
fields:
- age
- height
- weight
vehicle:
fields:
- color
- manufacturer
- model
- year
天真地试图在全球范围内排序
cat to_sort.yaml | yq 'sort'
错误:路径 [] 处的节点不是数组 (它是一个!!map)
如果它需要参数,我不知道提供什么。我不想只排序一个明确的路径,但我确实尝试过:
cat to_sort.yaml | yq 'sort(cles.driver.fields)'
错误:1:6:输入文本“cles.driver.f...”无效
我已经看到了一些yq
的例子,其中一个必须先做一个选择操作,但我不知道在这种情况下尝试什么。
yq e '(... | select(type == "!!seq")) |= sort' input
将递归循环所有的值,和select()
那些与type
!!seq
和更新(|=
)那些与sort
。
将 OP 的输入应用于该过滤器可以得到:
cles:
driver:
fields:
- age
- height
- weight
vehicle:
fields:
- color
- manufacturer
- model
- year
...
:Recursive Descent
你必须先遍历那里,然后更新数组(这里,使用 update|=
运算符)。
一个接一个:
yq '
.cles.driver.fields |= sort
| .cles.vehicle.fields |= sort
' to_sort.yaml
或者两者同时出现:
yq '
(.cles.driver.fields, .cles.vehicle.fields) |= sort
' to_sort.yaml
两个输出
cles:
driver:
fields:
- age
- height
- weight
vehicle:
fields:
- color
- manufacturer
- model
- year
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(83条)