Você pode considerar o uso de perl , por exemplo,
perl -pe 's/(?<=Height\()([0-9.]+)F(.+?)([0-9.]+)F(?=\);)/sprintf "%sF%s%sF",2*$1,$2,2*$3/e' file.java
As (?<=Height\() e (?=\);) são afirmações de tamanho zero ou lookarounds que limitam as correspondências à região específica entre esses delimitadores, após o que os valores numéricos são extraídos usando grupos de captura valores $1 ... $3 podem então ser manipulados na expressão de substituição usando sprintf com o modificador /e (evaluate).
Para aplicar recursivamente, você pode usar o comando find , por exemplo,
find . -name '*.java' -execdir perl -i'.bak' -pe 's/(?<=Height\()([0-9.]+)F(.+?)([0-9.]+)F(?=\);)/sprintf "%sF%s%sF",2*$1,$2,2*$3/e' {} \;
Executando em seu arquivo de teste:
$ perl -i'.bak' -pe 's/(?<=Height\()([0-9.]+)F(.+?)([0-9.]+)F(?=\);)/sprintf "%sF%s%sF",2*$1,$2,2*$3/e' bop.txt
usando então diff para confirmar a substituição
$ diff bop.txt.bak bop.txt
12c12
< private static final Height biomeHeight = new Height(8.0F, 0.025F);
---
> private static final Height biomeHeight = new Height(16F, 0.05F);