2013-01-16 27 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