Constructing numbers from input lines

I have a file with the information shown and I want to capture the
entry having the rgdt tag and taking the value (the location of the represents the decimal point, for example 0p50 represents 0.50)

I then want to divide the number at the end of each line by the value 0.50

I want to do this using awk

npt02-z30-sr65-rgdt0p50-dc0p006-16x12drw.csmis  345
npt02-z30-sr65-rgdt0p50-dc0p006-16x12drw.csmis 45
npt02-z30-sr65-rgdt0p50-dc0p006-16x12drw.csmis 456
npt02-z30-sr65-rgdt0p50-dc0p006-16x12drw.csmis 4523
npt02-z30-sr65-rgdt0p50-dc0p006-16x12drw.csmis 2342
npt02-z30-sr65-rgdt0p50-dc0p006-16x12drw.csmis 33425 
npt02-z30-sr65-rgdt0p50-dc0p006-16x12drw.csmis 3512

Like this?

awk -F'[- \t]*' 'sub(/rgdt/,x,$4){sub(/p/,".",$4);print $7/$4}' infile

the rgdt0p50 can occur in any position not necessarily $4

Except the last column? only once per line?

That's correct

Actual file might actually be like this. Want to strip away the first entry but remember the value in the line 0.50 where I need to divide the last number with 0.50

npt02-z30-sr65-rgdt0p50-dc0p006-16x12drw-run1.log:0. Rms Value    = 0.00551131
npt02-z30-sr65-rgdt0p50-dc0p006-16x12drw-run1.log:1. Rms Value    = 0.0105689
npt02-z30-sr65-rgdt0p50-dc0p006-16x12drw-run1.log:2. Rms Value    = 0.0137097
npt02-z30-sr65-rgdt0p50-dc0p006-16x12drw-run1.log:3. Rms Value    = 0.0163874
npt02-z30-sr65-rgdt0p50-dc0p006-16x12drw-run1.log:4. Rms Value    = 0.0187422
npt02-z30-sr65-rgdt0p50-dc0p006-16x12drw-run1.log:5. Rms Value    = 0.0197708
npt02-z30-sr65-rgdt0p50-dc0p006-16x12drw-run1.log:6. Rms Value    = 0.0208463
npt02-z30-sr65-rgdt0p50-dc0p006-16x12drw-run1.log:7. Rms Value    = 0.0217194
npt02-z30-sr65-rgdt0p50-dc0p006-16x12drw-run1.log:8. Rms Value    = 0.0226114
npt02-z30-sr65-rgdt0p50-dc0p006-16x12drw-run1.log:9. Rms Value    = 0.0229611
npt02-z30-sr65-rgdt0p50-dc0p006-16x12drw-run1.log:10. Rms Value    = 0.0239331
npt02-z30-sr65-rgdt0p50-dc0p006-16x12drw-run1.log:11. Rms Value    = 0.025327
npt02-z30-sr65-rgdt0p50-dc0p006-16x12drw-run1.log:12. Rms Value    = 0.0250741
npt02-z30-sr65-rgdt0p50-dc0p006-16x12drw-run1.log:13. Rms Value    = 0.0255705
npt02-z30-sr65-rgdt0p50-dc0p006-16x12drw-run1.log:14. Rms Value    = 0.0266015
npt02-z30-sr65-rgdt0p50-dc0p006-16x12drw-run1.log:15. Rms Value    = 0.0268534
npt02-z30-sr65-rgdt0p50-dc0p006-16x12drw-run1.log:16. Rms Value    = 0.0264882
npt02-z30-sr65-rgdt0p50-dc0p006-16x12drw-run1.log:17. Rms Value    = 0.0269775

Actually it would be good to store the value 0.50 and store it so I can determine 1/(0.5*0.5), then multiply
the last number by this value.

I should end up with

0. Rms Value    = 0.00551131/(0.50*0.50)
1. Rms Value    = 0.0105689/(0.50*0.50)
2. Rms Value    = 0.0137097/(0.50*0.50)
3. Rms Value    = 0.0163874/(0.50*0.50)
4. Rms Value    = 0.0187422/(0.50*0.50)
5. Rms Value    = 0.0197708/(0.50*0.50)
6. Rms Value    = 0.0208463/(0.50*0.50)
7. Rms Value    = 0.0217194/(0.50*0.50)
8. Rms Value    = 0.0226114/(0.50*0.50)
9. Rms Value    = 0.0229611/(0.50*0.50)
10. Rms Value    = 0.0239331/(0.50*0.50)
11. Rms Value    = 0.025327/(0.50*0.50)
12. Rms Value    = 0.0250741/(0.50*0.50)
13. Rms Value    = 0.0255705/(0.50*0.50)
14. Rms Value    = 0.0266015/(0.50*0.50)
15. Rms Value    = 0.0268534/(0.50*0.50)
16. Rms Value    = 0.0264882/(0.50*0.50)
17. Rms Value    = 0.0269775/(0.50*0.50)
awk 'sub(/.*rgdt/,x){sub(/p/,".");sub(/-.*/,x,$1);print $NF/$1}' infile

At the moment I've got the following code, and need to do this additional thing, divide last number with square of the rgdt value.

          grep "Rms Value" $f.log                          \
            | awk  '{   sub(/[^:]*:[0-9]*\.[ \t]*/,x);     \
                        print $1" "$2" "$3" "$4" "$NF   \
                    }' > $f.csmis

Using ksh, bash, ... If using ksh93, then you can use shell builtin floating calculation. In ksh93 case no need to use external bc.

#!/usr/bin/ksh93

#typeset -F2 value1 value2  result # float in ksh93

grep "Rms Value" logfile | while read line
do
        line=${line//-/ }  # convert - => space
        desim="1"  # default
        for fld in $line
        do
                case "$fld" in
                rgdt*) desim=${fld/rgdt/}   # rm rgdt
                       desim=${desim/p/.}   # p=>.
                       ;;
                esac
        done
        value1=$fld     # lastvalue
        value2=$desim
        #((result=value1/value2))
        result=$(echo "$value1 / $value2 " | bc )
        echo "$value1 / $value2 = $result"
done