Editar um arquivo em/etc usando shell script?

Editar um arquivo em/etc usando shell script?

Como faço sedpara editar o arquivo /etc/heat/heat.conf?

Quero adicionar as novas linhas na seção padrão

[DEFAULT]
rabbit_host =controller
rabbit_password =RABBIT_PASS

Responder1

Você pode usar um /regexp/endereço para encontrar a linha que contém [DEFAULT]e, em seguida, um comando anexar ( a) para adicionar linhas abaixo dela. Passe -ipara sedpara que ele modifique o arquivo no local (você pode querer executar sem ele primeiro para ter certeza de que está fazendo a coisa certa; ele exibirá a aparência do arquivo alterado sem realmente alterá-lo):

# sed -i '/^\[DEFAULT\]$/a rabbit_host =controller\nrabbit_password =RABBIT_PASS' /etc/heat/heat.conf

Responder2

se você tiver um arquivo /tmp/acom o contnet

hello my friend

Você pode usar sed para substituir strings:

sed -i 's/hello/hi/g' /tmp/a

isso resultará em:

hi my friend

ver:man sed

Além disso, você pode adicionar linhas sem sedum arquivo usando >>:

echo "I like you">>/tmp/a

Responder3

Tenho certeza de que o solicitante já encontrou uma solução, mas apenas por precaução.

Esta solicitação é ideal para a aplicação crudini, ela está disponível para todas as principais distribuições de Linux, por exemplo, o seguinte adicionará uma linha à DEFAULTseção de/etc/heat/heat.conf

crudini --set /etc/heat/heat.conf DEFAULT mysetting true

A seção:

[DEFAULT]
rabbit_host =controller
rabbit_password =RABBIT_PASS
mysetting = true

será atualizado se a entrada já estiver no arquivo conf.

Responder4

edAbordagem da velha escola

ed -s test <<EOF
/^\[DEFAULT\]$/
a
rabbit_host =controller
rabbit_password =RABBIT_PASS
.
w
q
EOF

informação relacionada