Ruby匹配后打印文件行

时间:2013-07-10 03:20:29

标签: ruby file match

我正在读文件,找到匹配,然后需要在比赛后打印几行。在我的比赛结束后,我似乎无法弄清楚如何打印“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

我不确定如何在比赛后打印线条。我现在正在使用某种类型的标志/递增变量和匹配后的“下一个”,但却无法使其工作。

感谢您的帮助。

1 个答案:

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