假设我有一个文件root.yml
keyA: valA
keyB: valB
myList:
然后我收到一些yml文件,比如
1.yml
project_id: abc
description: xyz
2.yml
project_id: cba
description: zyx
等等(它们可能存储在同一个文件夹中(
现在我想将1.yml
、2.yml
(等等(的内容附加到root.yml
的myList
,并输出到控制台
预期:
keyA: valA
keyB: valB
myList:
- project_id: abc
description: xyz
- project_id: cba
description: zyx
- (so on...)
我搜索了一些例子,但他们在yq命令中对列表项进行了硬编码,比如这篇文章:堆栈溢出
但我希望它从文件加载,而不是从硬代码加载请原谅我英语不好
使用mikefarah/yq,您可以使用加载函数来包含要包含的YAML文件的文件名,即您的示例
yq '.myList += [ load("1.yaml"), load("2.yaml") ]' root.yml
产生作为的YAML结果
keyA: valA
keyB: valB
myList:
- project_id: abc
description: xyz
- project_id: cba
description: zyx
如您的评论所示,如果其中一个对象具有父结构,并且您想从中提取元素,则可以执行
yq 'load("1.yaml") as $f | .myList += [ $f.config[], load("2.yaml") ]' root.yml
在yq
版本4.27.2 上测试