将txt文件从定义的位置扫描到定义的位置

时间:2016-03-07 14:12:22

标签: ruby

我需要计算确定文件中一个字符串的出现次数,我正在使用

a = File.read(file)

打开文件并使用

进行计数/扫描
a.scan(string){cont = cont + 1}

但我需要计算从定义位置到文件定义位置的事件。例如:从a[4502]a[9549]

我不知道是否需要剪切文件并在此扫描之后,或者我是否可以使用简单的循环(while,for,until,break,redo和retry)解决此问题,或者我是否可以使用命令

arq.seek(arg, IO::SEEK_SET)

拜托,有人可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

只需遍历文本文件,为每行添加索引,并仅在fromto行号之间进行匹配(从零开始计数)

  cont = 0
  File.open(file).each_with_index do |l,ix|
    cont += l.scan(string).count if (from..to).cover? ix
  end

答案 1 :(得分:0)

我使用了@engineersmnky建议

  

文件#read接受偏移和长度,但我不确定你是否   将偏移定义为行,字符,字节等,例如   File.read(文件,5047,4502)可能适合您,其中4502是偏移量   从文件的开头和5047(9549 - 4502)的长度来   读

它解决了我的问题。