in reply to Re^2: Parsing log file with regular-expression match nested brackets
in thread Parsing log file with regular-expression match nested brackets [RESOLVED]

Well, hm, did you read the node I linked to? You basically restated the content of your first post. What I was suggesting was to state instead a higher-level overview of your task. Because from what I can see, for example, you would be much better off logging into a database, whereupon you select groups of records using an SQL query. But I am guessing, because you haven't yet said something like (guessing again):

"I'm working on a logging system for my application, and I want to collate the debug output from the client and the server for the same transaction. I'm thinking of parsing the text log file of each using a regexp, but I'm wondering if there's a better way?"

That's the difference between discussing "X" and discussing "Y".

Hope this helps!


The way forward always starts with a minimal test.
  • Comment on Re^3: Parsing log file with regular-expression match nested brackets

Replies are listed 'Best First'.
Re^4: Parsing log file with regular-expression match nested brackets
by thanos1983 (Parson) on Feb 28, 2017 at 17:03 UTC

    Hello again,

    I have read before the XY Problem and this is the reason that I tried to go even into further details on my previous reply.

    But let me try again. I am login into a servers through a client script that has an application that produces this kind of log files.

    No I can not change the log file output, no I am not processing the stdout in real time. I am collecting the log files for further processing in the background, in order to detect miss matched errors.

    It would help me personally a lot to match entities from the log files through a script. I can do the whole process manually using "less and /keyword search" through the file as I am currently doing. But it would be much faster and easier for me to simply write a script to automate the process instead of doing it manually.

    I can not use a database on the system.

    I do not know if this helps but this is the reason that I am doing it.

    Hope this helps, as a higher level reply instead of a low level. :D

    Seeking for Perl wisdom...on the process of learning...not there...yet!

      Is this close to want you want ?

      #!/usr/bin/perl use strict; use warnings; use Data::Dump 'pp'; my %hash = (); my $level = 0; my $key; while (<DATA>){ next unless /\S/; my ($proc,$data) = split ':\s+',$_,2; if ($level == 0){ $key = $proc; } else { push @{$hash{$key}},$data if (defined $data); } ++$level if /{/; --$level if /}/; } pp \%hash; __DATA__ [ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: UDT{ [ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: l +ine2: data [ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: l +ine3: data [ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: l +ine4: data [ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: l +ine5: data [ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: l +ine6: data [ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: l +ine7: data } [ 11] 25/2/2017-19:02:06.980 proces_name thanos-Tx: UDT{ [ 11] 25/2/2017-19:02:06.980 proces_name thanos-Tx: l +ine10: data [ 11] 25/2/2017-19:02:06.980 proces_name thanos-Tx: l +ine11: data [ 11] 25/2/2017-19:02:06.980 proces_name thanos-Tx: l +ine12: data [ 11] 25/2/2017-19:02:06.980 proces_name thanos-Tx: l +ine13: data [ 11] 25/2/2017-19:02:06.980 proces_name thanos-Tx: l +ine14: data [ 11] 25/2/2017-19:02:06.980 proces_name thanos-Tx: l +ine15: data }
      poj

        Hello poj,

        Although the script works nicely I tested it with the complete log file and unfortunately it does not parse the file as I would expect the output to be.

        Sample of output:

        I need to work with the regex that I have at the beginning, this is the closest solution that I have got to my problem.

        Update: Inserting  <readmore> </readmore> tags to minimize space consumed.

        Thank you for your time and effort reading and replying to my question.

        Seeking for Perl wisdom...on the process of learning...not there...yet!