2013-01-16 49 views
-1

我想編寫一個Ruby腳本,它可以從一個文件複製特定的代碼行並將它們插入到另一個文件中。如果可能的話,我希望結果與我在file_1中突出顯示某些行的結果相同,然後將它們複製,然後將光標置於file_2的中間並粘貼複製的代碼(即file_2中的代碼插入點將向下移動...)。根據行號搜索並替換部分文件

我已經編寫了腳本,它們將文件的全部內容插入到一個空文件中,但我希望將某個文件中的某些行「複製並粘貼」到另一個文件的中間文件。是否可以按行號搜索文件?我的總體目標是否可能?提前致謝。

+0

你的意思是這是一個桌面應用程序? – tadman

+0

目前還不清楚你期待什麼樣的界面。它是一種方法,還是獨立的應用程序等?從你所描述的內容來看,這看起來應該是一個添加到文本編輯器中的腳本。因此,如果您使用的是emacs而不是在Ruby中,那麼它應該被寫入,例如在e-lisp中。 – sawa

回答

0

嘗試使用each_with_index,如果您可以將整個文件保存在內存中,那麼腳本非常簡單。

IO.readlines("/etc/passwd").each_with_index do |line, line_num| 
    if (line_num % 6 == 2) 
    puts line 
    end 
end 

然後,您可以重定向到一個新文件或打開了一個新的,使用

opened_file.puts line 

如果你有行號的列表,你可以只通過這些太行寫的是:

lines = IO.readlines(file) 
line_numbers.each do |i| 
    puts lines[i] 
end 
+0

好吧,即使有些人不明白我的問題,你似乎有保羅......這正是我所期待的......謝謝! – Brownie

0

只需使用分割功能,可以將文字到一個數組和您可以選擇按編號或線甚至一個範圍:

arraytext = filetext.Split("\n") 
arraytext[0] #for first line