Hi Anirban, In case if you print the complete data (the full line) then the following approach may help.
Here is one way to do it [code] use strict; use warnings; my %data; open my $fin, '<', 'data.txt' or die "Cannot open file ($!)"; while(<$fin>) { chomp; my($val) = split ',', $_; #split the data using comma my($key, $value) = split '=', $val; #split the values using equal sign (=) $value =~ /.*?-([\d\-]+)$/; #extract the numbers following the pattern (-DIGIT-DIGIT) $data{$1} = $_; } #sort in ascending order foreach my $key (sort {$a cmp $b} keys %data) { print "$data{$key}\n"; } [/code] [output] RXMOI:MO=RXOTRX-1-0,SC=0,DCP1=178,SIG=SCCONC,DCP2=179&&186,TEI=0; RXMOI:MO=RXOTRX-1-1,SC=0,DCP1=187,SIG=SCCONC,DCP2=188&&195,TEI=1; RXMOI:MO=RXOTRX-1-2,SC=0,DCP1=196,SIG=SCCONC,DCP2=197&&204,TEI=2; RXMOI:MO=RXOTRX-1-4,SC=0,DCP1=214,SIG=SCCONC,DCP2=215&&222,TEI=4; RXMOI:MO=RXOTRX-1-5,SC=0,DCP1=223,SIG=SCCONC,DCP2=224&&231,TEI=5; RXMOI:MO=RXOTRX-1-8,SC=0,DCP1=250,SIG=SCCONC,DCP2=251&&258,TEI=8; RXMOI:MO=RXOTRX-460-0,SC=0,DCP1=178,SIG=SCCONC,DCP2=179&&186,TEI=0; RXMOI:MO=RXOTRX-460-1,SC=0,DCP1=187,SIG=SCCONC,DCP2=188&&195,TEI=1; RXMOI:MO=RXOTRX-460-4,SC=0,DCP1=214,SIG=SCCONC,DCP2=215&&222,TEI=4; RXMOI:MO=RXOTRX-460-5,SC=0,DCP1=223,SIG=SCCONC,DCP2=224&&231,TEI=5; RXMOI:MO=RXOTRX-460-8,SC=0,DCP1=250,SIG=SCCONC,DCP2=251&&258,TEI=8; RXMOI:MO=RXOTRX-460-9,SC=0,DCP1=259,SIG=SCCONC,DCP2=260&&267,TEI=9; RXMOI:MO=RXOTRX-473-0,SC=0,DCP1=178,SIG=SCCONC,DCP2=179&&186,TEI=0; RXMOI:MO=RXOTRX-473-1,SC=0,DCP1=187,SIG=SCCONC,DCP2=188&&195,TEI=1; RXMOI:MO=RXOTRX-473-4,SC=0,DCP1=214,SIG=SCCONC,DCP2=215&&222,TEI=4; RXMOI:MO=RXOTRX-473-5,SC=0,DCP1=223,SIG=SCCONC,DCP2=224&&231,TEI=5; RXMOI:MO=RXOTRX-473-9,SC=0,DCP1=259,SIG=SCCONC,DCP2=260&&267,TEI=9; [/output] On Tue, Mar 24, 2015 at 4:39 PM, Shaji Kalidasan <shajiin...@gmail.com> wrote: > Hi Anirban, > > Here is one way to do it > > [code] > use strict; > use warnings; > > my @data; > open my $fin, '<', 'data.txt' or die "Cannot open file ($!)"; > > while(<$fin>) { > my($val) = split ',', $_; #split the data using comma > my($key, $value) = split '=', $val; #split the values using equal sign > (=) > $value =~ /.*?-([\d\-]+)$/; #extract the numbers following the pattern > (-DIGIT-DIGIT) > push @data, $1; > } > > #sort in ascending order > @data = sort {$a cmp $b} @data; > print join "\n", @data; > [/code] > > [data.txt] > RXMOI:MO=RXOTRX-473-0,SC=0,DCP1=178,SIG=SCCONC,DCP2=179&&186,TEI=0; > RXMOI:MO=RXOTRX-473-5,SC=0,DCP1=223,SIG=SCCONC,DCP2=224&&231,TEI=5; > RXMOI:MO=RXOTRX-473-1,SC=0,DCP1=187,SIG=SCCONC,DCP2=188&&195,TEI=1; > RXMOI:MO=RXOTRX-473-9,SC=0,DCP1=259,SIG=SCCONC,DCP2=260&&267,TEI=9; > RXMOI:MO=RXOTRX-473-4,SC=0,DCP1=214,SIG=SCCONC,DCP2=215&&222,TEI=4; > RXMOI:MO=RXOTRX-1-8,SC=0,DCP1=250,SIG=SCCONC,DCP2=251&&258,TEI=8; > RXMOI:MO=RXOTRX-1-2,SC=0,DCP1=196,SIG=SCCONC,DCP2=197&&204,TEI=2; > RXMOI:MO=RXOTRX-1-0,SC=0,DCP1=178,SIG=SCCONC,DCP2=179&&186,TEI=0; > RXMOI:MO=RXOTRX-1-5,SC=0,DCP1=223,SIG=SCCONC,DCP2=224&&231,TEI=5; > RXMOI:MO=RXOTRX-1-1,SC=0,DCP1=187,SIG=SCCONC,DCP2=188&&195,TEI=1; > RXMOI:MO=RXOTRX-1-4,SC=0,DCP1=214,SIG=SCCONC,DCP2=215&&222,TEI=4; > RXMOI:MO=RXOTRX-460-9,SC=0,DCP1=259,SIG=SCCONC,DCP2=260&&267,TEI=9; > RXMOI:MO=RXOTRX-460-4,SC=0,DCP1=214,SIG=SCCONC,DCP2=215&&222,TEI=4; > RXMOI:MO=RXOTRX-460-8,SC=0,DCP1=250,SIG=SCCONC,DCP2=251&&258,TEI=8; > RXMOI:MO=RXOTRX-460-5,SC=0,DCP1=223,SIG=SCCONC,DCP2=224&&231,TEI=5; > RXMOI:MO=RXOTRX-460-1,SC=0,DCP1=187,SIG=SCCONC,DCP2=188&&195,TEI=1; > RXMOI:MO=RXOTRX-460-0,SC=0,DCP1=178,SIG=SCCONC,DCP2=179&&186,TEI=0; > [/data.txt] > > [output] > 1-0 > 1-1 > 1-2 > 1-4 > 1-5 > 1-8 > 460-0 > 460-1 > 460-4 > 460-5 > 460-8 > 460-9 > 473-0 > 473-1 > 473-4 > 473-5 > 473-9 > [/output] > > On Tue, Mar 24, 2015 at 4:12 PM, Anirban Adhikary < > anirban.adhik...@gmail.com> wrote: > >> Hi List >> I have a file like this. >> RXMOI:MO=RXOTRX-*473-0*,SC=0,DCP1=178,SIG=SCCONC,DCP2=179&&186,TEI=0; >> RXMOI:MO=RXOTRX-*473-5*,SC=0,DCP1=223,SIG=SCCONC,DCP2=224&&231,TEI=5; >> RXMOI:MO=RXOTRX-*473-1*,SC=0,DCP1=187,SIG=SCCONC,DCP2=188&&195,TEI=1; >> RXMOI:MO=RXOTRX-*473-9*,SC=0,DCP1=259,SIG=SCCONC,DCP2=260&&267,TEI=9; >> RXMOI:MO=RXOTRX-*473-4,*SC=0,DCP1=214,SIG=SCCONC,DCP2=215&&222,TEI=4; >> RXMOI:MO=RXOTRX-*1-8*,SC=0,DCP1=250,SIG=SCCONC,DCP2=251&&258,TEI=8; >> RXMOI:MO=RXOTRX-*1-2,*SC=0,DCP1=196,SIG=SCCONC,DCP2=197&&204,TEI=2; >> RXMOI:MO=RXOTRX-*1-0*,SC=0,DCP1=178,SIG=SCCONC,DCP2=179&&186,TEI=0; >> RXMOI:MO=RXOTRX-*1-5*,SC=0,DCP1=223,SIG=SCCONC,DCP2=224&&231,TEI=5; >> RXMOI:MO=RXOTRX-*1-1,*SC=0,DCP1=187,SIG=SCCONC,DCP2=188&&195,TEI=1; >> RXMOI:MO=RXOTRX-*1-4,*SC=0,DCP1=214,SIG=SCCONC,DCP2=215&&222,TEI=4; >> RXMOI:MO=RXOTRX-*460-9*,SC=0,DCP1=259,SIG=SCCONC,DCP2=260&&267,TEI=9; >> RXMOI:MO=RXOTRX-*460-4*,SC=0,DCP1=214,SIG=SCCONC,DCP2=215&&222,TEI=4; >> RXMOI:MO=RXOTRX-*460-8*,SC=0,DCP1=250,SIG=SCCONC,DCP2=251&&258,TEI=8; >> RXMOI:MO=RXOTRX-*460-5*,SC=0,DCP1=223,SIG=SCCONC,DCP2=224&&231,TEI=5; >> RXMOI:MO=RXOTRX-*460-1*,SC=0,DCP1=187,SIG=SCCONC,DCP2=188&&195,TEI=1; >> RXMOI:MO=RXOTRX-*460-0*,SC=0,DCP1=178,SIG=SCCONC,DCP2=179&&186,TEI=0; >> >> This file is from a testing environment. But in production environment >> this file can be more than 500 lines. So my goal is to sort the file based >> on the bold numbers and create a new file. >> This is required for data validation. If the file is not in sorted order >> then it will be very difficult to validate the file manually. >> >> For this I have started with the following code >> >> #!/usr/bin/perl >> use strict; >> use warnings; >> my $file_name = "RXMOI_TRX_CMD"; >> open my $RFH, '<', $file_name; >> my $sequence_no; >> my $lowest_no; >> while (my $line = <$RFH>) { >> chomp($line); >> if ($line =~ m/.*?\-(\d+)\-(\d+).*/) { >> $sequence_no = "$1$2"; >> print "$sequence_no\n"; >> } >> } >> >> I can extract the number into a variable but after that not getting any >> idea how to proceed. Could you please provide some logic so that I can >> proceed further. >> >> Best Regards >> Anirban. >> >> >> > > > -- > best, > Shaji > > ---------------------------------------------------------------------------------------------------------------------------------------------- > Your talent is God's gift to you. What you do with it is your gift back to > God. > > ---------------------------------------------------------------------------------------------------------------------------------------------- > -- best, Shaji ---------------------------------------------------------------------------------------------------------------------------------------------- Your talent is God's gift to you. What you do with it is your gift back to God. ----------------------------------------------------------------------------------------------------------------------------------------------