Изменение части строки в скрипте 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, это может быть любое действительное число. Теперь я хочу изменить приведенное выше выражение так, чтобы его значение увеличивалось на 1 с помощью скрипта bash следующим образом ::

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

Связанный контент