用某些特定结构替换文件内部

用某些特定结构替换文件内部

我有一个如下所示的文件:

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

一些,在你的版本中已替换为/

另请参阅其他修改:双引号、变量等。

相关内容