按行号搜索和替换部分文件

时间:2013-01-16 17:09:57

标签: ruby regex file copy

我想写一个Ruby脚本,它会从一个文件中复制特定的代码行并将它们插入另一个文件中。我希望,如果可能的话,结果与我在文件_1中突出显示一些行,复制它们,然后将光标放在file_2的中间并将复制的代码粘贴在(即。下面的file_2中的代码中)相同插入点会向下移动......)。

我过去编写了一个脚本来获取文件的全部内容并将其插入到一个空文件中,但是我希望将一个文件中的某些行“复制并粘贴”到另一个文件的中间。是否可以按行号搜索文件?我的总体目标可能吗?提前谢谢。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

只需使用分割功能将文本转换为数组,您就可以按数字甚至范围选择行:

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