Modificando parte de uma string no script bash

Modificando parte de uma string no script bash

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 fortrancó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

informação relacionada