in reply to Please help with sorting/sort
Produces the same output as above:use strict; use warnings; my @data = ('#Comment', '*ss id addr id: 099 bbb ccc aaa', '*ss id add +r id: 003 aaa bbb ccc', '#Comment', '*333 23 ss id: 002 aaa bbb ccc', + '*22 233333333 34432 233 44'); my @id= (); foreach my $entry (@data){ if($entry =~ /id:/){ push(@id, $entry); } } my @sortedid = sort {$a->[1] <=> $b->[1]} map{[$_,/id:\s*(\d+)/]} @id; foreach my $entry (@data){ if($entry =~ /id:/){ my $sort = shift(@sortedid); print $sort->[0]; }else{ print $entry; } print "\n"; }
#Comment *333 23 ss id: 002 aaa bbb ccc *ss id addr id: 003 aaa bbb ccc #Comment *ss id addr id: 099 bbb ccc aaa *22 233333333 34432 233 44
|
|---|