2013-07-10 43 views
1

我正在閱讀文件,找到一個匹配,然後需要在比賽後打印幾行。我似乎無法弄清楚在比賽結束後如何打印「n」行。比賽後文件的紅寶石打印行

f = File.open(ARGV[0],'r') 
    f.each_line do |l| 
     case l 
     when /MATCH/ #Match 
      puts NEXT_7_LINES #How do I print the next 7 lines 
        #Would like to print the next 7-12 lines. 

     when /DIFF_MATCH/ 
      puts NEXT_4_LINES 
     end 
    end 
f.close 

我不知道如何在比賽結束後打印行。我現在正在使用某種類型的標誌/增量變量,在匹配之後使用'next',但一直未能使其正常工作。

謝謝你的幫助。

回答

3

也許是這樣的:

print_count = 0 
f.each_line do |l| 
    if print_count > 0 
    puts line 
    print_count -= 1 
    elsif l =~ /MATCH/ 
    print_count = 7 
    elsif l =~ /ANOTHER_MATCH/ 
    print_count = 4 
    end 
end 
+0

不錯的辦法,謝謝!我只是意識到我需要在第一場比賽後打印接下來的7-12條線。我不認爲你的代碼可以修改以適應,可以嗎?謝謝! – twinturbotom

+0

@twinturbotom要在第一次匹配後打印,請添加一個布爾變量以指示它是否是第一個匹配項。如果要跳過某些特定的行,請添加另一個名爲「skip_count」的變量,就像「print_count」一樣。 – halfelf