Je dois écrire un script simple pour remplacer un bloc de texte dans un fichier de configuration par le contenu d'un autre fichier.Remplacer un bloc de texte délimité dans un fichier par le contenu d'un autre fichier
Supposons avec avoir les fichiers simplifiés suivants:
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"/>
Je veux d'exécuter un script et ont realm.xml
remplacer le contenu entre le <!-- BEGIN realm -->
et <!-- END realm -->
lignes. Si realm.xml
change, chaque fois que le script est à nouveau exécuté, il remplacera à nouveau les lignes avec le nouveau contenu de realm.xml
. Ceci est destiné à être exécuté dans /etc/init.d/tomcat
au démarrage du service sur plusieurs installations sur lesquelles le domaine va être différent. Je ne suis pas sûr comment je peux le faire simplement avec awk
ou sed
.
Whoa ... ça marche. J'essaie de comprendre ce qui se passe. – rmarimon
Les branches 'ba' désignent" a "dans les accolades associées au test de" BEGIN "et les branches' b' se terminent lorsque "END" est trouvé car il se trouve dans un ensemble d'accolades associé à ce test. C'est un peu comme si/BEGIN/alors lisez le fichier; alors que non/FIN/faire sautent la ligne'. –
Je reçois une erreur de syntaxe avec ceci: 'sed: -e expression # 1, char 39: inattendu'} '' –