
という名前のファイルがあり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