【发布时间】:2019-01-31 08:43:55
【问题描述】:
我有一个日志文件test_list.txt,如下所示:
Processing SampleDocumentController#index (for 101.101.101.101 at 2020-12-12 12:00:00) [POST]
Session ID: sdfgs923jks0dm23mlasf3da9asfjvyur
Parameters: {"format"=>"xml", "controller"=>"sample_document", "q"=>"last_updated_at", "action"=>"index"}
Completed in 0.00529 (189 reqs/sec) | Rendering: 0.00007 (1%) | DB: 0.00126 (23%) | 200 OK [https://www.bars.com/sample/sample_document.lmx?]
我有一个正则表达式来捕获日志文件的方法和会话 ID:
regex = /\[([A-Z]+)\]\D+([a-zA-Z0-9]{32}$)/i
当我单独运行它时,它工作正常并返回捕获的字符串"POST" 和"sdfgs923jks0dm23mlasf3da9asfjvyur"。但是,使用以下脚本test.rb:
File.open("test_list.txt").each do |li|
if !li.nil?
x = li.match(regex)
if !x.nil?
a, b = x.captures
p a
p b
end
end
end
在命令行中运行ruby test.rb 不会打印任何内容。
知道为什么它不适用于脚本吗?
【问题讨论】:
-
您似乎正在逐行读取文件。将其作为单个字符串读入。