#!/usr/bin/perl -w use strict; my @linearr; while () { chomp; if($_ =~ m{\[(\d{4}/\d{2}/\d{2}\s+\d{2}\:\d{2}\:\d{2})\]\s+\[(\d{1,3})\]\s+ERRORMSG\s+(.*)}) { my $date = $1; my $err_no = $2; my $err_msg = $3; push @linearr, $date.' === '.$err_no.' === '.$err_msg."\n"; }else{ $linearr[@linearr-1] =~ s/\n$/\ $_\n/;} } print @linearr;