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

관련 정보