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.
----------------------------------------------------------------------------------------------------------------------------------------------

Reply via email to