<[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]

Reply via email to