$ perl -Mstrict -Mwarnings -Mautodie -e ' open my $fh, "<", "./pm_1050631_in.txt"; my $data = do { local $/; <$fh> }; close $fh; my %server; my $re = qr{\[(\w+)\]\s+([^[]*)}; while ($data =~ /$re/g) { $server{$1} = join "," => split /\s+/ => $2; } for (sort keys %server) { print "$_:$server{$_}\n"; } ' server1:/tmp/location1/file.log,/tmp/location2/file.log server2:/usr/loc1/file.log,/usr/loc2/file.log server3:/citrix/dir3/file.log