我有一个如下所示的文件:
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
一些,在你的版本中已替换为/。
另请参阅其他修改:双引号、变量等。