
Tengo un archivo llamado variables.f90
, que tiene muchas líneas que definen diferentes variables, de la siguiente manera::
integer::n_monomer=6800
real*8::rx=5.0d0
#... randomly integer and real numbers defined
real*8::mu_nano=8.0d0
.......
......
y no sé cuál será el valor de mu_nano
, puede ser cualquier número real. Ahora quiero modificar la declaración anterior de modo que su valor se incremente en 1 usando el script bash de la siguiente manera::
real*8::mu_nano=9.0d0
Respuesta1
Esto parece fortran
código, y no es la mejor idea analizar el código fuente en un lenguaje superior, pero de todos modos... con awk
:
awk -F'[=.]' '/nano/{$2++; print $1"="$2"."$3; next}1'
Esto supone que la variable siempre viene dada con un punto. Toma solo una parte entera (entre =
y .
), aumenta en 1 y vuelve a imprimir todo.
Respuesta2
Para editar en el lugar, usaría perl:
perl -i.bak -pe 's/(?<=mu_nano=)([\d.]+)/ sprintf "%.1f", $1+1 /e' variables.f90