¿Editar un archivo en/etc usando scripts de shell?

¿Editar un archivo en/etc usando scripts de shell?

¿Cómo lo uso sedpara editar el archivo /etc/heat/heat.conf?

Quiero agregar las nuevas líneas en la sección predeterminada

[DEFAULT]
rabbit_host =controller
rabbit_password =RABBIT_PASS

Respuesta1

Puede usar una /regexp/dirección para encontrar la línea que contiene [DEFAULT]y luego un acomando agregar ( ) para agregar líneas debajo de ella. Pase -ia sedpara que modifique el archivo en el lugar (es posible que desee ejecutarlo sin él primero para asegurarse de que esté haciendo lo correcto; mostrará cómo se verá el archivo modificado sin cambiarlo realmente):

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

Respuesta2

si tienes un archivo /tmp/acon el contnet

hello my friend

Puedes usar sed para reemplazar cadenas:

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

esto resultará en:

hi my friend

ver:man sed

También puedes agregar líneas sin ellas seda un archivo usando >>:

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

Respuesta3

Estoy seguro de que el solicitante ya ha encontrado una solución, pero por si acaso.

Esta solicitud es ideal para la aplicación Crudini, está disponible para todas las principales versiones de Linux, por ejemplo, lo siguiente agregará una línea a DEFAULTla sección de/etc/heat/heat.conf

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

La sección:

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

se actualizará si la entrada ya está en el archivo conf.

Respuesta4

edEnfoque de la vieja escuela

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

información relacionada