plz help in writing awk script

hi buddies

pls help in this matter

i have file like this input file
--------------------------
(PARTITION PARTITION_1 VALUES LESS THAN (101, 16383 ) TABLESPACE PART_1
,PARTITION PARTITION_2 VALUES LESS THAN (101, 32766 ) TABLESPACE PART_2
,PARTITION PARTITION_3 VALUES LESS THAN (101, 49149 ) TABLESPACE PART_3
,PARTITION PARTITION_4 VALUES LESS THAN (101, 65535 ) TABLESPACE PART_4
,PARTITION PARTITION_3 VALUES LESS THAN (101, 49149 ) TABLESPACE PART_3
,PARTITION PARTITION_4 VALUES LESS THAN (101, 65535 ) TABLESPACE PART_4
,PARTITION PARTITION_5 VALUES LESS THAN (102, 16383 ) TABLESPACE PART_5
,PARTITION PARTITION_6 VALUES LESS THAN (102, 32766 ) TABLESPACE PART_6
,PARTITION PARTITION_7 VALUES LESS THAN (102, 49149 ) TABLESPACE PART_7
,PARTITION PARTITION_8 VALUES LESS THAN (102, 65535 ) TABLESPACE PART_8 ) ;

i need out file like this:
---------------------
(PARTITION PARTITION_1 VALUES LESS THAN (101, 4095 ) TABLESPACE PART_1
,PARTITION PARTITION_2 VALUES LESS THAN (101, 8191 ) TABLESPACE PART_2
,PARTITION PARTITION_3 VALUES LESS THAN (101, 12287 ) TABLESPACE PART_3
,PARTITION PARTITION_4 VALUES LESS THAN (101, 16383 ) TABLESPACE PART_4
,PARTITION PARTITION_5 VALUES LESS THAN (101, 20478 ) TABLESPACE PART_5
,PARTITION PARTITION_6 VALUES LESS THAN (101, 24574 ) TABLESPACE PART_6
,PARTITION PARTITION_7 VALUES LESS THAN (101, 28670 ) TABLESPACE PART_7
,PARTITION PARTITION_8 VALUES LESS THAN (101, 32766 ) TABLESPACE PART_8
,PARTITION PARTITION_9 VALUES LESS THAN (101, 36861 ) TABLESPACE PART_9
,PARTITION PARTITION_10 VALUES LESS THAN (101, 40957 ) TABLESPACE PART_10
,PARTITION PARTITION_11 VALUES LESS THAN (101, 45053 ) TABLESPACE PART_11
,PARTITION PARTITION_12 VALUES LESS THAN (101, 49149 ) TABLESPACE PART_12
,PARTITION PARTITION_13 VALUES LESS THAN (101, 53245 ) TABLESPACE PART_13
,PARTITION PARTITION_14 VALUES LESS THAN (101, 57342 ) TABLESPACE PART_14
,PARTITION PARTITION_15 VALUES LESS THAN (101, 61438 ) TABLESPACE PART_15
,PARTITION PARTITION_16 VALUES LESS THAN (101, 65535 ) TABLESPACE PART_16
,PARTITION PARTITION_17 VALUES LESS THAN (102, 4095 ) TABLESPACE PART_17
,PARTITION PARTITION_18 VALUES LESS THAN (102, 8191 ) TABLESPACE PART_18
,PARTITION PARTITION_19 VALUES LESS THAN (102, 12287 ) TABLESPACE PART_19
,PARTITION PARTITION_20 VALUES LESS THAN (102, 16383 ) TABLESPACE PART_20
,PARTITION PARTITION_21 VALUES LESS THAN (102, 20478 ) TABLESPACE PART_21
,PARTITION PARTITION_22 VALUES LESS THAN (102, 24574 ) TABLESPACE PART_22
,PARTITION PARTITION_23 VALUES LESS THAN (102, 28670 ) TABLESPACE PART_23
,PARTITION PARTITION_24 VALUES LESS THAN (102, 32766 ) TABLESPACE PART_24;

I see a pattern from PARTITION_1 to PARTITION_16.

The thing I dont get is what decides the jump from 101,65535 to 102,4095 in these lines

,PARTITION PARTITION_16 VALUES LESS THAN (101, 65535 ) TABLESPACE PART_16
,PARTITION PARTITION_17 VALUES LESS THAN (102, 4095 ) TABLESPACE PART_17

If I understand your code correctly, it is adding 4096, but your
example is not being consistent:

,PARTITION PARTITION_4 VALUES LESS THAN (101, 16383 ) TABLESPACE PART_4
,PARTITION PARTITION_5 VALUES LESS THAN (101, 20478 ) TABLESPACE PART_5

It should be:

,PARTITION PARTITION_4 VALUES LESS THAN (101, 16383 ) TABLESPACE PART_4
,PARTITION PARTITION_5 VALUES LESS THAN (101, 20479 ) TABLESPACE PART_5

Other numbers should be changed too.

In any event, see if this works for you:

typeset -i mCnt1=1
typeset -i mCnt2=4095
mVar='101'
while [ $mCnt1 -le 24 ]
do
 if [ $mCnt1 -eq 17 ]; then
   mVar='102'
   mCnt2=4095
 fi
 mPart1='PARTITION PARTITION_'${mCnt1}' VALUES LESS THAN ('${mVar}
 mPart2=', '${mCnt2}' ) TABLESPACE PART_'${mCnt1}
 echo ${mPart1}${mPart2}
 mCnt1=${mCnt1}+1
 mCnt2=${mCnt2}+4096
done

For each of the partition values 'partition_1' is this a sub split in the multiple of 4 K ( 4 x 1024 ) with minumnum being 4K and maximum being 65 K
and once it reaches 65k with first argument 101, its moving on with the same pattern to the next value of 101 (i.e.) 102.

Is that the right pattern ?