我有一个包含n行的文件。我需要在其中搜索字段( SessionId及其值)并打印其相应的值。
我已编码访问该文件并逐行打印。在获得字段并打印其价值方面需要帮助。
文件样本行:
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 :(得分: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
实际上没有必要遍历这些线。您可以只读取文件并使用regular-expression查找所需的文本。但无论什么适合你的猫。如果它太大,有时阅读整个文件可能会有问题。
HTH
答案 1 :(得分: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