Modificando parte de uma string no script bash

1

Eu tenho um arquivo chamado variables.f90 , tendo muitas linhas definindo diferentes variáveis, como segue:

integer::n_monomer=6800
real*8::rx=5.0d0
#... randomly integer and real numbers defined
real*8::mu_nano=8.0d0
.......
......

e eu não sei qual será o valor de mu_nano , pode ser qualquer número real. Agora eu quero modificar a declaração acima de tal forma que, seu valor é incrementado em 1 usando o script bash da seguinte forma:

real*8::mu_nano=9.0d0
    
por mubeena 06.01.2015 / 18:57

2 respostas

2

Isso parece com fortran code, e não é a melhor ideia para analisar código-fonte de linguagem mais alta, mas mesmo assim ... com awk :

awk -F'[=.]' '/nano/{$2++; print $1"="$2"."$3; next}1'

Isto assume que a variável é sempre dada com um ponto. Leva apenas uma parte inteira dele (entre = e . ), aumenta em 1 e imprime tudo de volta.

    
por 06.01.2015 / 19:36
2

Para editar no lugar, eu usaria o perl:

perl -i.bak -pe 's/(?<=mu_nano=)([\d.]+)/ sprintf "%.1f", $1+1 /e' variables.f90
    
por 06.01.2015 / 20:30