Hi Rob,

Your script just hit the spot!

Thanks
Jakob

Rob Dixon <[EMAIL PROTECTED]> wrote:
> <[EMAIL PROTECTED]> wrote:
> >
> > I have some data column based data I want to modify a
> bit.
> >
> > 0065 663 517 046  0 1485
> > 0065 663 517 046  3 1500
> > 0065 663 517 046  5 1882
> > 0120 620 515 919  0 1485
> > 0120 620 515 919  6 1816
> > 0120 620 515 919  8 2136
> >
> > I would like to add a counter to column 5 to fill out the
> gaps
> > in between e.g. 0 and 10 - but doing so without changing
> the
> > other columns values until column 4 itself changes values
> >
> > My result would look like:
> > 0065 663 517 046  0 1485
> > 0065 663 517 046  1 1485
> > 0065 663 517 046  2 1485
> > 0065 663 517 046  3 1500
> > 0065 663 517 046  4 1500
> > 0065 663 517 046  5 1882
> > 0120 620 515 919  0 1485
> > 0120 620 515 919  1 1485
> > 0120 620 515 919  2 1485
> > 0120 620 515 919  3 1485
> > 0120 620 515 919  4 1485
> > 0120 620 515 919  5 1485
> > 0120 620 515 919  6 1816
> > 0120 620 515 919  7 1816
> > 0120 620 515 919  8 1485
> >
> > My initial idea was to compare (in a while loop) the value
> in
> > column 4 with the previous line. However, I cannot figure
> out
> > how to save the "comparing" variable.
> >
> > Any ideas how to get started on this?
> > Thanks
> 
> I think the program below will do what you want.
> 
> Cheers,
> 
> Rob
> 
> 
> 
> 
> 
> use strict;
> use warnings;
> 
> my @last_data;
> 
> while (<DATA>) {
> 
>   my @data = split;
> 
>   if (@last_data and $last_data[3] == $data[3]) {
>     while (++$last_data[4] < $data[4]) {
>       printf "%04d %03d %03d %03d %2d %04d\n", @last_data;
>     }
>   }
> 
>   printf "%04d %03d %03d %03d %2d %04d\n", @data;
> 
>   @last_data = @data;
> }
> 
> 
> __DATA__
> 0065 663 517 046  0 1485
> 0065 663 517 046  3 1500
> 0065 663 517 046  5 1882
> 0120 620 515 919  0 1485
> 0120 620 515 919  6 1816
> 0120 620 515 919  8 2136
> 
> **OUTPUT**
> 
> 0065 663 517 046  0 1485
> 0065 663 517 046  1 1485
> 0065 663 517 046  2 1485
> 0065 663 517 046  3 1500
> 0065 663 517 046  4 1500
> 0065 663 517 046  5 1882
> 0120 620 515 919  0 1485
> 0120 620 515 919  1 1485
> 0120 620 515 919  2 1485
> 0120 620 515 919  3 1485
> 0120 620 515 919  4 1485
> 0120 620 515 919  5 1485
> 0120 620 515 919  6 1816
> 0120 620 515 919  7 1816
> 0120 620 515 919  8 2136
> 
> 
> 
> -- 
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to