arrays - yq (GO/Mike Farah) 递归统一所有数组

标签 arrays yaml unique yq

这可能与我发布的另一个问题有关:yq (GO/Mike Farah) sort all arrays recursively?

Mike Farah 的 yqmaking arrays unique 提供了文档但我无法弄清楚如何将其应用于嵌套更深的列表

输入

classes:
  driver:
    fields:
      - height
      - age
      - age
  vehicle:
    fields:
      - model
      - model
      - color
      - year

期望的输出

classes:
  driver:
    fields:
      - age
      - height
  vehicle:
    fields:
      - color
      - model
      - year

天真地尝试全局统一

cat to_sort.yaml | yq 'unique'                     

Error: Only arrays are supported for unique

如果需要参数,我不知道该提供什么。我不想只对一个显式路径进行排序,但我确实尝试过这个:

 cat to_sort.yaml | yq 'unique(.classes.driver.fields)'

Error: Bad expression, please check expression syntax

我见过一些必须首先执行选择操作的 yq 示例,但我不知道在这种情况下该尝试什么。

最佳答案

 yq e '(... | select(type == "!!seq")) |= unique' input

将递归循环遍历所有项目,并且select()那些 type !!seq

然后更新(|=)那些具有unique的:

提供输入的结果:

classes:
  driver:
    fields:
      - height
      - age
  vehicle:
    fields:
      - model
      - color
      - year

关于arrays - yq (GO/Mike Farah) 递归统一所有数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73746733/

相关文章:

yaml - 在 Helm 中将 YAML 转换为字符串

javascript - 我想生成唯一 ID

r - 在 apply 和 unique 中处理 NA 值

javascript - 按键将数组列表的元素分组/连接在一起

arrays - 如何循环遍历不同类型的类数组并快速打印它们的属性?

java - 在代码 Java 中的正确位置将数组设置为 null

javascript - 如何获取 AngularJS 响应对象集合中对象的 indexOf?

kubernetes - 找不到Kubernetes容器VolumeMounts吗?

ruby-on-rails - rails : encoding woes with serialized hashes despite UTF8

mysql - 在 MySQL 中,是否可以对一行设置 UNIQUE 约束?