我正在读取一个文件,找到一个匹配项,然后需要在匹配后打印几行我似乎不知道如何在比赛后打印“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”,但还无法使其工作。
谢谢你的帮助。

最佳答案

可能是这样的:

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

10-07 19:07
查看更多