我想編寫一個Ruby腳本,它可以從一個文件複製特定的代碼行並將它們插入到另一個文件中。如果可能的話,我希望結果與我在file_1中突出顯示某些行的結果相同,然後將它們複製,然後將光標置於file_2的中間並粘貼複製的代碼(即file_2中的代碼插入點將向下移動...)。根據行號搜索並替換部分文件
我已經編寫了腳本,它們將文件的全部內容插入到一個空文件中,但我希望將某個文件中的某些行「複製並粘貼」到另一個文件的中間文件。是否可以按行號搜索文件?我的總體目標是否可能?提前致謝。
我想編寫一個Ruby腳本,它可以從一個文件複製特定的代碼行並將它們插入到另一個文件中。如果可能的話,我希望結果與我在file_1中突出顯示某些行的結果相同,然後將它們複製,然後將光標置於file_2的中間並粘貼複製的代碼(即file_2中的代碼插入點將向下移動...)。根據行號搜索並替換部分文件
我已經編寫了腳本,它們將文件的全部內容插入到一個空文件中,但我希望將某個文件中的某些行「複製並粘貼」到另一個文件的中間文件。是否可以按行號搜索文件?我的總體目標是否可能?提前致謝。
嘗試使用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
好吧,即使有些人不明白我的問題,你似乎有保羅......這正是我所期待的......謝謝! – Brownie
只需使用分割功能,可以將文字到一個數組和您可以選擇按編號或線甚至一個範圍:
arraytext = filetext.Split("\n")
arraytext[0] #for first line
你的意思是這是一個桌面應用程序? – tadman
目前還不清楚你期待什麼樣的界面。它是一種方法,還是獨立的應用程序等?從你所描述的內容來看,這看起來應該是一個添加到文本編輯器中的腳本。因此,如果您使用的是emacs而不是在Ruby中,那麼它應該被寫入,例如在e-lisp中。 – sawa