Ruby,需要读取文件的内容并将其拆分为较小的新文件

标签 ruby linux

我有一个很长的文件,其中包含大量带有选项的主机名..

类似的东西

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/

相关文章:

c - 接入点初始扫描

ruby - 无法加载我的 Ruby 文件

ruby - 访问不存在的键时的多级哈希默认参数,如 h[1][1] += 1

linux - 只有一个用户可以推/pull 到 github

linux - exit 命令在 bash 中不起作用

linux - 在 Linux 上删除以前版本的文件(格式为 name_#.#.#-#.extension)

linux - 删除 python3.4 后,ubuntu 14.04 中没有显示仪表板/终端/侧边栏

ruby - 如何引用不同类中的方法和另一个类中的方法?

Java - 问题四舍五入

ruby - 如何调用对象的自定义方法?