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]