
Tenho um arquivo chamado variables.f90
, tendo muitas linhas definindo variáveis diferentes, como segue::
integer::n_monomer=6800
real*8::rx=5.0d0
#... randomly integer and real numbers defined
real*8::mu_nano=8.0d0
.......
......
e não sei qual será o valor de mu_nano
, pode ser qualquer número real. Agora quero modificar a instrução acima de forma que seu valor seja incrementado em 1 usando o script bash da seguinte maneira::
real*8::mu_nano=9.0d0
Responder1
Isso se parece com fortran
código, e não é a melhor ideia analisar código-fonte em linguagem superior, mas de qualquer maneira... com awk
:
awk -F'[=.]' '/nano/{$2++; print $1"="$2"."$3; next}1'
Isso pressupõe que a variável é sempre fornecida com um ponto. Leva apenas parte inteira (entre =
e .
), aumenta em 1 e imprime tudo de volta.
Responder2
Para editar no local, eu usaria perl:
perl -i.bak -pe 's/(?<=mu_nano=)([\d.]+)/ sprintf "%.1f", $1+1 /e' variables.f90