파일 내부를 특정 구조로 바꿉니다.

파일 내부를 특정 구조로 바꿉니다.

다음과 같은 파일이 있습니다.

login1.stampede(73)$ cat mc_input 
800  ! n_pass
300  ! n_equil_pass
6 6 6 ! simulation cell dimension in x, y, and z
700   ! Tinit
100   ! Tmin
700   ! Tmax
-10   ! Tinc
Li -6 Fe 0   ! mu init
Li -6  Fe 0  ! mu min
Li 6    Fe 0  ! mu max
Li 0.3  Fe 0  ! mu inc
  4  ! number of increments between structure output (0 indicates no output)
  1  ! calculate average correlations yes(1) or no (0)
  0  ! temp_chem = 0 if temperature runs 1 if chem runs

이제 이 라인을 타겟팅하고 싶습니다.

Li -6 Fe 0   ! mu init

-6을 다른 mu_init=-3으로 바꾸세요. sed로 어떻게 달성할 수 있나요? 감사해요. 따라서 결과는 다음과 같아야 합니다.

Li -3 Fe 0   ! mu init

"Fe 0"은 다양한 다른 원소 번호 조합이 될 수 있지만 "H 2", "Ge 3.2"와 같이 고정된 상태로 유지하겠습니다.

내가 현재 가지고 있는 것은 다음과 같습니다.

 sed -i 's,^\(Li \).*! mu init,\1$mu_init'  Fe 0   ! mu init',' mc_input

하지만 작동하지 않습니다 ...

답변1

귀하의 의견 이후 새로운 베타 버전-3.333:

sed -i "s/^\(Li \)[0-9-][.0-9-]*\(.*mu init\)/\1${mu_init}\2/" mc_input

- - - -


참고로 첫 번째 테스트 버전:

sed -i "s/^\(Li \)[0-9-][0-9-]*\(.*mu init\)/\1${mu_init}\2/" mc_input

일부,귀하의 버전에서는 다음으로 대체되었습니다./.

다른 수정 사항(큰따옴표, 변수 등)도 참조하세요.

관련 정보