Is this close to want you want ?
poj#!/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 }
In reply to Re^5: Parsing log file with regular-expression match nested brackets
by poj
in thread Parsing log file with regular-expression match nested brackets [RESOLVED]
by thanos1983
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |