我有一个文件,我想查看该文件,并且只要它与“LINE_MATCH_START”相匹配,这是该行中唯一的文本(注释或前面的空格除外),我希望它能够打印出来后直到它匹配“LINE_MATCH_END”(它也必须是该行中唯一的文本,允许注释但这必须是除了空格之外的行中的第一件事)。我希望它能够覆盖整个文件并将其保存多次。
实施例,
printf ("this is some text")
// comment LINE_MATCH_START this should be ignored
some_other_code
LINE_MATCH_START // can have spaces before it and comments after it
oh
this
should be
saved
LINE_MATCH_END
some_other_piece_of_code
LINE_MATCH_START
AGAIN
lets save this part as well
LINE_MATCH_END
从上面的代码片段中,“LINE_MATCH_START”之前可以有空格,它可以在同一行上有注释,但没有其他代码。
我希望我的代码保存所有这部分
oh
this
should be
saved
AGAIN
lets save this part as well
我如何在ruby中执行此操作?
答案 0 :(得分:0)
这看起来像是得到了你的输出,也许有助于一个想法,但我会做一些更强大的东西。
f = File.new('output.txt', 'w')
visible = false
IO.foreach('file_name') do |line|
case line
when /\s*LINE_MATCH_START.*/ then visible = true
next
when /\s*LINE_MATCH_END.*/ then visible = false
end
f.write(line) if visible
end