我想编写一个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