我有一个很长的文件,其中包含大量带有选项的主机名..
类似的东西
hostname {
option 1
option 2
option 3
}
该文件大约有 2000 个主机名。我想在 ruby 中做的是:
打开文件 开始阅读 当我到达主机名时,使用该主机名创建一个文件 并仅在到达 } 停止时才从该主机名中输入相同的信息 并继续下一个主机名/重复
最佳答案
如果您知道 { 或 } 不会出现在选项中,那么实现此目的的一种方法是使用带有 multiline 的 scan 方法。正则表达式上的模式:
b.scan( /([^\{]*)(\{)([^\}]*\n)*(\})/m)
=> [["a ", "{", "\n b\n c \n d\n", "}"],
["\nB ", "{", "\n 1\n 2\n 3\n", "}"]]
你的 re 需要一些调整,但如果你想将其全部放入内存中进行解析,它会起作用。写入文件应该很简单。
关于Ruby,需要读取文件的内容并将其拆分为较小的新文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7572876/