Necesito escribir un script simple para reemplazar un bloque de texto en un archivo de configuración con el contenido de otro archivo.Reemplazar el bloque delimitado de texto en el archivo con el contenido de otro archivo
Asumamos con tener los siguientes archivos simplificadas:
server.xml
<?xml version='1.0' encoding='UTF-8'?>
<Server port="8005" shutdown="SHUTDOWN">
<Service name="Catalina">
<Connector port="80" protocol="HTTP/1.1"/>
<Engine name="Catalina" defaultHost="localhost">
<!-- BEGIN realm -->
<sometags/>
<sometags/>
<!-- END realm -->
<Host name="localhost" appBase="webapps"/>
</Engine>
</Service>
</Server>
realm.xml
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
Quiero ejecutar una secuencia de comandos y tienen realm.xml
reemplazar el contenido entre el <!-- BEGIN realm -->
y <!-- END realm -->
líneas. Si realm.xml
cambia, cada vez que se ejecuta el script nuevamente, reemplazará las líneas nuevamente con el nuevo contenido de realm.xml
. Está previsto que se ejecute en /etc/init.d/tomcat
al iniciar el servicio en varias instalaciones en las que el reino será diferente.
No estoy tan seguro de cómo puedo hacer esto simplemente con awk
o sed
.
Whoa ... funciona. Estoy intentando dominar la ramificación para entender realmente lo que está pasando. – rmarimon
Las ramas 'ba' para etiquetar" a "dentro de las llaves asociadas con la prueba para" BEGIN "y las ramas' b' hasta el final cuando se encuentra "END", ya que está en un conjunto de llaves asociadas con esa prueba. Es algo así como 'if/BEGIN/then read file; while not/END/do skip line'. –
Obtengo un error de sintaxis con esto: 'sed: -e expresión # 1, char 39: inesperado'} '' –