
Ich habe eine Datei namens variables.f90
, die viele Zeilen enthält, die verschiedene Variablen definieren, wie folgt::
integer::n_monomer=6800
real*8::rx=5.0d0
#... randomly integer and real numbers defined
real*8::mu_nano=8.0d0
.......
......
und ich weiß nicht, was der Wert von sein wird mu_nano
, es kann jede beliebige reelle Zahl sein. Jetzt möchte ich die obige Anweisung so ändern, dass ihr Wert mit dem folgenden Bash-Skript um 1 erhöht wird::
real*8::mu_nano=9.0d0
Antwort1
Das sieht aus wie fortran
Code und es ist nicht die beste Idee, Quellcode in einer höheren Sprache zu analysieren, aber trotzdem ... mit awk
:
awk -F'[=.]' '/nano/{$2++; print $1"="$2"."$3; next}1'
Dies setzt voraus, dass die Variable immer mit einem Punkt angegeben wird. Es wird nur der ganzzahlige Teil davon (zwischen =
und .
) übernommen, um 1 erhöht und alles wieder ausgegeben.
Antwort2
Zum Bearbeiten vor Ort würde ich Perl verwenden:
perl -i.bak -pe 's/(?<=mu_nano=)([\d.]+)/ sprintf "%.1f", $1+1 /e' variables.f90