substituir dentro de um arquivo com alguma estrutura específica

0

Eu tenho um arquivo parecido com:

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

agora gostaria de segmentar a linha

Li -6 Fe 0   ! mu init

e substitua -6 por outro mu_init = -3, como eu poderia consegui-lo com sed? obrigado. Portanto, o resultado deve ser:

Li -3 Fe 0   ! mu init

e "Fe 0" podem ser todos os tipos de combinação de outros elementos e nós vamos mantê-lo fixo, por exemplo "H 2", "Ge 3.2"

o que eu tenho atualmente é:

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

mas não funciona ....

    
por user40780 25.03.2016 / 14:38

1 resposta

1

Nova versão testada após seu comentário sobre -3.333 :

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

- - - -

Para referência, a primeira versão testada:

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

Alguns , na sua versão foram substituídos por / .

Veja também outras modificações: aspas duplas, variáveis, etc.

    
por 25.03.2016 / 15:12

Tags