On Fri, 23 Jan 2004 09:36:00 +0100 Bjorn Van Blanckenberg <[EMAIL PROTECTED]> wrote:
> let say that the file contains these items (every item is seperated > with a tab) > > one title state name code1 number > two title2 state2 name2 code2 number2 > one title3 state3 name3 code3 number3 > four title4 state4 name4 code4 number4 > six title5 state5 name5 code1 number5 > dip title6 state6 name6 code1 number6 > fun title7 state7 name7 code2 number7 > > the thing i'am looking for is that it is sorted by item 5 and writes > back to the file > with an extra line if item 5 is different > > so I would come up with: > > one title state name code1 number > six title5 state5 name5 code1 number5 > dip title6 state6 name6 code1 number6 > > two title2 state2 name2 code2 number2 > fun title7 state7 name7 code2 number7 > > one title3 state3 name3 code3 number3 > > four title4 state4 name4 code4 number4 Well you can try; ------------------------------------------------------------- #!/usr/bin/perl -w chomp(@fields = <DATA>); # slurp in the file $lastbit=1; @sorted = map { $_->[0] } sort { $a->[5] cmp $b->[5] } map { [ $_ , (split /\t/) ] } @fields;#tab separated fields foreach (@sorted){ @bits = split; print "\n" if ($bits[4] ne $lastbit); print "$_\n"; $lastbit=$bits[4]; } __DATA__ one title state name code1 10 two title2 state2 name2 code2 21 one title3 state3 name3 code3 13 four title4 state4 name4 code4 14 six title5 state5 name5 code1 number5 dip title6 state6 name6 code1 number6 fun title7 state7 name7 code2 number7 ---------------------------------------------- and it produces 21:42:56 [~/perltest]#perl sortdata1.pl one title state name code1 10 six title5 state5 name5 code1 number5 dip title6 state6 name6 code1 number6 two title2 state2 name2 code2 21 fun title7 state7 name7 code2 number7 one title3 state3 name3 code3 13 four title4 state4 name4 code4 14 -- Owen -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>