2014-03-19 83 views
0

我有一個包含n行的文件。我需要在其中搜索一個字段(SessionId及其值)並打印其相應的值。搜索文件中的模式並將其打印在jruby中

我編碼訪問文件並逐行打印。在獲得領域和打印其價值方面需要幫助。文件

採樣線:

LastSessionTeardown.cc|598|Resolving:=N2BBSessionGateway.Factory 
2013-12-23 06:03:22.488046 UTC VZ_QIP_S3_208 LastSessionTeardown.cc|636 <ERROR>:Failed  to resolve SessionGateway:N2BBSessionGateway.Factory 
Cause : user exception, ID 'IDL:omg.org/CosNaming/NamingContext/NotFound:1.0' 
2013-12-23 06:03:22.488078 UTC VZ_QIP_S3_208 LastSessionTeardown.cc|640|Total resolved  SessionGateways list(size):=0 
2013-12-23 06:03:22.488098 UTC VZ_QIP_S3_208 LastSessionTeardown.cc|642|Out  resolveSGWs:: 
2013-12-23 06:07:17.485959 UTC VZ_QIP_S3_208 StreamServiceMasterImpl.cc|989|In  createStream::=77D23ECC4649571A367E9C314C4AA7AA 
2013-12-23 06:07:17.487706 UTC VZ_QIP_S3_208 StreamServiceMasterImpl.cc|1036|StreamId:  77D23ECC4649571A367E9C314C4AA7AA **SessionId: C0A800F0DB2A::1387778933::1501** ContentId: vault22_12.mpg 1xGoid: 
2013-12-23 06:07:17.505233 UTC VZ_QIP_S3_208 StreamServiceMasterImpl.cc|989|In  createStream::=E30CC868325B51D288A8E2D95322B840 

注:該文件有很多上方和現場低於行指定

代碼:

require "java" 

include_class "java.io.BufferedReader" 
include_class "java.io.FileReader" 
include_class "java.lang.String" 

fileReader = FileReader.new "protocoltiming.log.txt" 

bufferReader = BufferedReader.new fileReader 
str = bufferReader.readLine 

while str 
puts str.to_s 
str = bufferReader.readLine 
end 

請幫助一下什麼是添加到此代碼?

回答

0
while str 
    str = bufferReader.readLine 
    session_id = str.strip.scan(/SessionId: (.+)\s/)[0][0] if str.include?("SessionId: ") 
    if session_id 
    # session_id found 
    else 
    # session_id not found 
    end 
end 

實際上沒有必要循環通過線路。您可以閱讀該文件並使用正則表達式來查找所需的文本。但是,無論適合你的貓。如果整個文件太大,有時候可能會出現問題。

HTH

+0

謝謝,但我得到這個錯誤文我上面的行添加到我的代碼C:/jruby-1.6.8/lib/ruby/site_ruby/shared/builtin/javasupport/core_ext/object.rb:99警告:已經初始化了常量字符串 NoMethodError:未定義的方法'include?' for nil:NilClass (root)at C:\ FCSFinal \ latest_Automation \ Proj \ file.rb:16 – karthick23

+0

我對'jRuby'不太熟悉,但是可以發佈完整的代碼嗎?只需編輯您的上述帖子並複製粘貼您正在使用的代碼即可。 –

+0

惡劣請找代碼, 需要的 「java」 include_class代碼 「java.io.BufferedReader中的」 include_class代碼 「java.io.FileReader」 include_class代碼 「java.lang.String中」 的FileReader = FileReader.new「StreamService。日誌」 bufferReader = BufferedReader.new的FileReader STR = bufferReader.readLine #puts str.to_s 而STR STR = bufferReader.readLine SESSION_ID = str.strip.scan(/ SessionID的:(+)\ S /)[0] [0] if str.include?(「SessionId:」) if session_id #s ession_id找到 else #session_id找不到 結束 結束 – karthick23

0

完成。這工作!

require "java" 

include_class "java.io.BufferedReader" 
include_class "java.io.FileReader" 
include_class "java.lang.String" 

fileReader = FileReader.new "StreamService.log" 

bufferReader = BufferedReader.new fileReader 

#puts str 
str = bufferReader.readLine 

while str = bufferReader.readLine 
#puts str.to_s 

sessionid = "" 

    sessionid = str.match(/SessionId:(.*)ContentId/) 

    if sessionid.to_s != '' 
    puts "Session ID = #{sessionid[1]}" 
    end 

end 
相關問題