我有一个名为 的文件variables.f90
,其中有许多行定义不同的变量,如下所示::
integer::n_monomer=6800
real*8::rx=5.0d0
#... randomly integer and real numbers defined
real*8::mu_nano=8.0d0
.......
......
我不知道 的值是多少mu_nano
,它可以是任何实数。现在我想修改上面的语句,使其值使用 bash 脚本增加 1,如下所示::
real*8::mu_nano=9.0d0
答案1
这看起来像fortran
代码,解析高级语言源代码并不是最好的主意,但无论如何......使用awk
:
awk -F'[=.]' '/nano/{$2++; print $1"="$2"."$3; next}1'
这假设变量总是用点给出。它只取其中的整数部分(在=
和之间.
),增加 1,然后将所有内容打印回来。
答案2
要就地编辑,我将使用 perl:
perl -i.bak -pe 's/(?<=mu_nano=)([\d.]+)/ sprintf "%.1f", $1+1 /e' variables.f90