Eu usaria algo como perl
ou awk
, que pode manipular operações aritméticas, em vez de sed
(que só pode realmente substituir a expressão regular).
Por exemplo, usando perl
$ printf 'tree my_tree = ((t1:961.00,t2:902.00):961:00,t3:878:00);\n' |
perl -pe 's/:([0-9.]+)/sprintf ":%.2f", $1*rand()/ge'
tree my_tree = ((t1:918.95,t2:880.40):633.34:0.00,t3:648.35:0.00);
Você pode substituir rand()
do perl por outra função de biblioteca aleatória de sua escolha - por exemplo, usando Math::Random
do pacote libmath-random-perl
:
$ printf 'tree my_tree = ((t1:961.00,t2:902.00):961:00,t3:878:00);\n' |
perl -MMath::Random=random_normal -pe 's/:([0-9.]+)/sprintf ":%.2f", $1*random_normal(0.0, 1.0)/ge'
tree my_tree = ((t1:-362.08,t2:822.35):-254.87:0.00,t3:1158.46:0.00);