用ruby替换第一行或第n行文件

时间:2013-02-10 16:34:07

标签: ruby file

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

2 个答案:

答案 0 :(得分:2)

如果您正在编辑XML,请使用专门为该任务设计的工具。如果操作的XML不在您的控制之下,subgsub和正则表达式不是很好的选择。

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

有很多关于如何做到这一点的例子,以及Nokogiri网站上的教程。

答案 1 :(得分: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(...)会将您文件中的每一行读入数组。

  4. 上述所有示例中n的位置都是文件的nth行。