如何使用ruby替换文本文件或xml文件的第一行?我在复制奇怪的xml API时遇到问题,需要在创建XML文件后编辑文档指令。奇怪的是,我必须这样做,但在这种情况下,这是必要的。
答案 0 :(得分:2)
如果您正在编辑XML,请使用专门为该任务设计的工具。如果操作的XML不在您的控制之下,sub
,gsub
和正则表达式不是很好的选择。
使用Nokogiri解析XML,定位节点并更改它们,然后发出更新的XML。
有很多关于如何做到这一点的例子,以及Nokogiri网站上的教程。
答案 1 :(得分:1)
有几种不同的方法可以做到这一点:
使用ARGF
(假设您的ruby程序将文件名作为命令行参数)
ruby -e "puts ARGF.to_a[n]" yourfile.xml
定期打开文件,然后阅读n
行
File.open("yourfile") { |f|
line = nil
n.times { line = f.gets }
puts line
}
这种方法对内存的密集程度较低,因为一次只考虑一行,它也是最简单的方法。
使用IO.readlines()
(仅当整个文件适合内存时才有效!)
IO.readlines("yourfile")[n]
IO.readlines(...)
会将您文件中的每一行读入数组。
上述所有示例中n
的位置都是文件的nth
行。