Question

I have a file with n number of lines. I need to search for a field(SessionId and its value) in it and print its corresponding value.

I have coded to access the file and print it line by line. Need help in getting a field and printing its value.

Sample lines of file:

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

Note : the file has lots of lines above and below the field specified

Code:

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

Kindly help me on what to be added to this code?

Was it helpful?

Solution

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

There is actually no need to loop through the lines. You can just read the file and use regular-expression to find required text. But whatever suits your cat. Sometimes reading whole file could be really problematic if it is too big.

HTH

OTHER TIPS

done. this works!

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
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top