51 mike:yq(GO/MikeFarah)递归排序所有数组

这可能与我发布的另一个问题有关: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的例子,其中一个必须先做一个选择操作,但我不知道在这种情况下尝试什么。

1
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
1

你必须先遍历那里,然后更新数组(这里,使用 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

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(547)
Adobe photoshop cs 4:无法使用adobephotoshopcs5在图像中带来透明背景
上一篇
儿童蚊帐买什么样式的好用:“儿童”道具的类型是什么(react fc children)
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(83条)