我有一个超过一百万行的日志文件。我正试图根据一个特定的用户名从日志中提取一些数据。你知道吗
日志样本:
Started POST "/projects/some-project/issues/update_form.js" for 194.176.105.12 at Tue Jun 10 14:58:59 +0200 2014
Processing by IssuesController#update_form as JS
Parameters: {"issue"=>{"is_private"=>"0", "done_ratio"=>"0", "fixed_version_id"=>"", "tracker_id"=>"2", "assigned_to_id"=>"", "due_date"=>"", "custom_field_values"=>{"12"=>[""], "16"=>[""]}, "subject"=>"", "start_date"=>"", "estimated_hours"=>"", "description"=>"", "status_id"=>"1", "priority_id"=>"2"}, "project_id"=>"barnet-and-chase-farm", "attachments"=>{"screenshot"=>{"name"=>"screenshot", "content"=>"", "description"=>""}}, "utf8"=>"✓", "authenticity_token"=>"sometoken"}
Current user: SOME.USERNAME (id=20)
Rendered issues/_form_custom_fields.html.erb (3.7ms)
Rendered issues/_attributes.html.erb (397.9ms)
Rendered plugins/redmine_screenshot_paste/app/views/issues/_screenshot.html.erb (0.6ms)
Rendered issues/_form.html.erb (418.6ms)
Rendered issues/update_form.js.erb (422.3ms)
Completed 200 OK in 1032.4ms (Views: 406.6ms | ActiveRecord: 22.7ms)
日志文件中有许多上述的重复块。块中的内容是可变的-即可能有不同的数据、不同的行数等。但是,所有块都以字符串Started
开始,以字符串Completed
结束-两个字符串始终位于新行的第1列。你知道吗
我只需要提取那些包含字符串Current user: SOME.USERNAME
的块
实现这一目标的最佳方法是什么?我猜RegExp可以做到这一点,但我不确定如何编写它来达到预期的效果。你知道吗
我可以使用linux命令行(grep等)或者一些软件,比如Sublime Text或者Notepad++或者社区推荐的任何东西,比如Python脚本。你知道吗
您可以使用以下正则表达式:
作为一个小python片段,您可以
并称之为
相关问题 更多 >
编程相关推荐