yq将多个文件附加到列表yaml中

  • 本文关键字:列表 yaml 文件 yq yaml yq
  • 更新时间 :
  • 英文 :


假设我有一个文件root.yml

keyA: valA
keyB: valB
myList:

然后我收到一些yml文件,比如

1.yml

project_id: abc
description: xyz

2.yml

project_id: cba
description: zyx

等等(它们可能存储在同一个文件夹中(

现在我想将1.yml2.yml(等等(的内容附加到root.ymlmyList,并输出到控制台

预期:

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 上测试

相关内容

  • 没有找到相关文章

最新更新