假设我有以下 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,但我个人不在乎。
请注意: 这些是简单的示例。我有更多的文件,它们也更复杂。但是,我很可能只有字符串值,我需要将其附加到现有值或为其创建一个新键。