合并多个 YAML 文件,但保留所有值以防有多个

问题描述 投票:0回答:0

假设我有以下 YAML 文件:

file1.yaml

A:
  a:
    a1: value1
  b: value2
B:
  b: value3

file2.yaml

A:
  a:
    a1: value2

file3.yaml

A:
  a:
    a1: value3

我怎样才能合并它们,但是要么有一个键在里面多次,要么有值分开,例如。使用 Mike Farah 的 yq(Apple Silicon 架构上的 v4.31.2)的逗号

我可以使用以下 shell 命令轻松合并它们:

yq ea '. as $item ireduce({}; . * $item)' file*.yaml

但是:

A.a.a1
只等于
value3

所以current输出是:

A:
  a:
    a1: value3
  b: value2
B:
  b: value3

期望的输出是:

A:
  a:
    a1: value1,value2,value3
  b: value2
B:
  b: value3

或:

A:
  a:
    a1: value1
    a1: value2
    a1: value3
  b: value2
B:
  b: value3

其中

A.a.a1
键可以按任何顺序排列。

我不确定后者所需的输出是有效的 YAML,但我个人不在乎。

请注意: 这些是简单的示例。我有更多的文件,它们也更复杂。但是,我很可能只有字符串值,我需要将其附加到现有值或为其创建一个新键。

yq
© www.soinside.com 2019 - 2024. All rights reserved.