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