2013-02-10 106 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網站上的教程。