如何将yaml文件拆分为多个文件?

Posted

技术标签:

【中文标题】如何将yaml文件拆分为多个文件?【英文标题】:How to split yaml file into several files? 【发布时间】:2017-03-27 16:05:10 【问题描述】:

我有一个大 (~2Gb) yaml 文件。我使用yaml-cpp 库和YAML::Loadfile 函数。但是我有一个内存不足的问题。

将这个文件分成几个小文件的最简单方法是什么,每个小文件都是一个有效的yaml 文件(可能取决于 linux 的功能)?

【问题讨论】:

所以my answer 你上一个问题不是一个选项? @flyx 我找不到使用HandleNextDocument 的示例,我决定寻找另一种方式。 【参考方案1】:

如果您的文件中有多个文档,那么您可以在行首的--- 上拆分。

如果您没有多个文档(或者如果您有多个文档,但它们仍然太大),您的文档要么在顶层有映射,要么有一个序列(理论上你也可以有一个多行标量,但这不太可能)。

如果您的文档的顶层具有流样式(使用 映射,使用[ ] 进行序列化),那么事情在很大程度上取决于布局的方式。但是,如果它具有块样式,那么您可以轻松找到***地图的各个键或序列的元素。它们都具有与第一个元素相同的缩进(很可能是零缩进)。

根据上述信息拆分您的 YAML 文档并单独处理每个元素。

【讨论】:

我什至无法将此文件加载到我的 RAM 中(top 显示某个时刻 RAM 的使用率为 100%)。 为什么要将它加载到 RAM 中?可以用head,或者grep -e '^---'看前几行,看是否有多个文档。 看起来像带有***映射的单个文档。只需逐行阅读并在不以空格开头的每一行上拆分,这些行就是关键。合并每个拆分的行,并将其作为 YAML 处理。

以上是关于如何将yaml文件拆分为多个文件?的主要内容,如果未能解决你的问题,请参考以下文章

React Native:如何将文件拆分为多个文件并导入它们?

如何将 terraform 文件(main.tf)拆分为多个文件(无模块)?

如何将我的 QML 代码拆分为多个文件?

如何有效地将大型数据框拆分为多个拼花文件?

Scala:我如何根据行数将数据帧拆分为多个 csv 文件

将excel根据列名称拆分成多个文件