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

関連情報