bash スクリプトで文字列の一部を変更する

bash スクリプトで文字列の一部を変更する

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

関連情報