ho bisogno di scrivere un semplice script per sostituire un blocco di testo in un file di configurazione con il contenuto di un altro file.Sostituire blocco delimitata di testo in file con il contenuto di un altro file
Assumiamo con i seguenti file semplificate:
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"/>
voglio eseguire uno script e hanno realm.xml
sostituire il contenuto tra il <!-- BEGIN realm -->
e <!-- END realm -->
Linee. Se lo realm.xml
cambia quindi ogni volta che lo script viene eseguito di nuovo, sostituirà nuovamente le righe con il nuovo contenuto di realm.xml
. Questo è destinato a essere eseguito in /etc/init.d/tomcat
all'avvio del servizio su più installazioni su cui il dominio sarà diverso.
Non sono sicuro di come farlo semplicemente con awk
o sed
.
Whoa ... funziona. Sto cercando di capire come funzionano le ramificazioni per capire veramente cosa sta succedendo. – rmarimon
I rami 'ba' per etichettare" a "all'interno delle parentesi associate al test per" BEGIN "e i rami' b' alla fine quando viene trovata "END" poiché si trova in una serie di parentesi associate a quel test. È un po 'come "se/BEGIN/poi leggi il file; mentre non/END/fai saltare la linea'. –
Viene visualizzato un errore di sintassi con questo: 'sed: -e espressione # 1, char 39: imprevisto'} '' –