在 Ruby 中读取文件时转到下一行

use*_*065 2 ruby string parsing file

我正在逐行读取文件。当我找到特定字符串时,我想分析以下几行,直到出现特定字符。具体来说。这是我的输入文件:

 blabbal
 blabbalb
 blablab
 info {
     (bbbbb,
     ccccc,
     dddddddddd,
     eeeeeeeeeeeeeee
     fffffffffffffff);
     xxxxxxxxxxxxxxx, 
     rrrrrrrrrrrrrrr,
     };
 blabbal
Run Code Online (Sandbox Code Playgroud)

我正在使用读取文件

  File.open("example.txt", "r").each_line do |line|
Run Code Online (Sandbox Code Playgroud)

然后我想:1)当我找到字符串“info”时,在 while 循环内迭代下一行,直到找到字符“);”

这是我当前代码的示例:

        File.open("example.txt", "r").each_line do |line|
            if (line.include?("info") == true)
                while(1) do
                    puts line
                    next if line.include?(")") == false
                end
            end
        end
Run Code Online (Sandbox Code Playgroud)

似乎它不会转到下一行(“puts”始终打印同一行 - >“info {”)

Ani*_*hit 5

File.open("temp", "r") do |fh|
      while(line = fh.gets) != nil
        if line.include?("info")
          while(line = fh.gets) != nil
            puts "#{line}"
            break if line.include?(")")
          end
        end
      end
    end
Run Code Online (Sandbox Code Playgroud)

我想这就是你所需要的。它的输出是

(bbbbb,
 ccccc,
 dddddddddd,
 eeeeeeeeeeeeeee
 fffffffffffffff);
Run Code Online (Sandbox Code Playgroud)