从ruby中包含某些关键字的特定行读取文件
我是编程新手,请帮帮我。 我需要根据时间从特定行读取一个文件,并将其写入另一个文件。但是它在写入另一个文件时跳过了第一行从ruby中包含某些关键字的特定行读取文件,ruby,Ruby,我是编程新手,请帮帮我。 我需要根据时间从特定行读取一个文件,并将其写入另一个文件。但是它在写入另一个文件时跳过了第一行 timeStr="2011-08-01 02:24" File.open(path+ "\\logs\\messages.log", "r") do |f| # Skip the garbage before pattern: while f.gets !~ (/#{timeStr}/) do; end # Read yo
timeStr="2011-08-01 02:24"
File.open(path+ "\\logs\\messages.log", "r") do |f|
# Skip the garbage before pattern:
while f.gets !~ (/#{timeStr}/) do; end
# Read your data:
while l = f.readlines
File.open(path+ "\\logs\\messages1.log","a") do |file1|
file1.puts(l)
end
end
end
当我运行上面的脚本时,第一行匹配的timeStr被跳过,并且从第二行文件被写入消息1。打开messages1.log文件时,包含匹配字符串的第一行将不存在。知道如何在写入messages1.log文件时也包括第一行吗 我认为您希望保留与
/{timeStr}/
匹配的行,但此循环:
while f.gets !~ (/#{timeStr}/) do; end
扔掉它。你可以重新安排一下:
#在正确的范围内获取'line'。
直线=零
#吃光'f',直到我们找到我们要找的线为止
#但请记住下面的“line”以供使用。
while(line=f.get)
中断if(line=~/{timeStr}/)
结束
#如果我们找到了我们要找的线路,那就开始工作吧。。。
如果(行)
#抓取文件的其余部分
_rest=f.readlines
#将匹配行前置到文件的其余部分
休止。取消移位(行)
#把它写下来。
File.open(路径+“\\logs\\messages1.log”,“a”)do | file1|
file1.put(剩余部分)
结束
结束
我还没有测试过它,但它应该可以解决打字错误之类的问题。嘿,谢谢,现在使用您提供的代码,它可以正常工作:)