2013-02-10 103 views
0

如何使用ruby替换文本文件或xml文件的第一行?我在复制奇怪的xml API时遇到问题,并且在创建XML文件后需要编辑文档指令。奇怪的是,我必须这样做,但在这种情况下,这是必要的。用ruby替换文件的第一行或第n行

+3

请发布代码不起作用,以便我们可以看到你正在尝试完成的任务。 – 2013-02-10 16:35:59

+0

您是否尝试修改磁盘上的文件,或者读取内容,然后在使用它之前修改特定行? – Phrogz 2013-02-10 16:41:36

+0

@Phrogz无论哪种方式最有效。 – holaSenor 2013-02-12 02:46:39

回答

1

有几种不同的方法可以做到这一点:

  1. 使用ARGF(假设你的Ruby程序需要一个文件名作为命令行参数)

    ruby -e "puts ARGF.to_a[n]" yourfile.xml 
    
  2. 打开文件定期读取n

    File.open("yourfile") { |f| 
        line = nil 
        n.times { line = f.gets } 
        puts line 
    } 
    

    这种方法在内存上的密集程度较低,因为一次只考虑一条线,这也是最简单的方法。

  3. 使用IO.readlines()(如果整个文件将装入内存只会工作!)

    IO.readlines("yourfile")[n] 
    

    IO.readlines(...)将读取你的文件中的每一行到一个数组。

n在上述所有例子是nth行的文件。

3

如果您要编辑XML,请使用专门为此任务设计的工具。 sub,gsub如果被操纵的XML不在你的控制之下,那么正则表达式不是很好的选择。

使用Nokogiri解析XML,找到节点并更改它们,然后发出更新的XML。

有很多例子显示如何做到这一点,再加上Nokogiri网站上的教程。