gpt4 book ai didi

Ruby:将一个ansible主机文件分成嵌套数组

转载 作者:行者123 更新时间:2023-12-02 09:19:54 25 4
gpt4 key购买 nike

我正在通过 http.get 检索一个 ansible hosts 文件,它看起来像这样:

[group1]
host1
host2

[group2]
host3
host4

我如何从每个组开始迭代,然后折叠以下行直到下一个组成为这样的嵌套哈希?

{ "group1" => ["host1", "1host2"], "group2" => ["host3", "host4"] }

最佳答案

直接解析 INI

如果你不想做一个完整的解析,你可以把你的语料库当作一个包含部分的 INI 文件。这样的文件可能很棘手并且有很多边缘情况,特别是如果您不能严格定义部分是如何分离的。但是,以下内容适用于您的特定语料库。

# Read the file.
ini = File.read '/tmp/example.ini'

# Split the file into sections. Assumes only one blank line between
# sections.
sections = ini.scan /^\[.*?(?:\n\n|\z)/m

# Return an array of hashes, then merge them. Use the first element
# from each split as the hash key.
hash = sections.map do |section|
array = section.split
key = array.shift.delete '[]'
{ key => array }
end.reduce({}, :merge)

#=> {"group1"=>["host1", "host2"], "group2"=>["host3", "host4"]}

对于更复杂的类似 INI 的文件,这可能会以各种方式失败,因此如果您采用这种方式,您可能需要对文件进行更全面的解析。或者,您可以将结果保存为文件,然后 parse the inventory into a Ruby hash using the Ansible CLI .

关于Ruby:将一个ansible主机文件分成嵌套数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43507396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com