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

관련 정보