मुझे किसी अन्य फ़ाइल की सामग्री के साथ कॉन्फ़िगरेशन फ़ाइल में टेक्स्ट के ब्लॉक को प्रतिस्थापित करने के लिए एक साधारण स्क्रिप्ट लिखनी होगी।किसी अन्य फ़ाइल की सामग्री के साथ फ़ाइल में पाठ के सीमित ब्लॉक को बदलें
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"/>
मैं एक स्क्रिप्ट चलाने और <!-- BEGIN realm -->
और <!-- END realm -->
के बीच सामग्री को बदलने के realm.xml
करना चाहते हैं:
के निम्नलिखित सरलीकृत फ़ाइलें के साथ मान लेते हैं लाइनों। यदि realm.xml
तब बदलता है जब भी स्क्रिप्ट फिर से चलती है तो यह realm.xml
की नई सामग्री के साथ फिर से लाइनों को प्रतिस्थापित कर देगी। यह कई प्रतिष्ठानों पर सेवा के स्टार्टअप पर /etc/init.d/tomcat
में चलाने का इरादा है जिस पर दायरा अलग होगा।
मुझे यकीन नहीं है कि मैं इसे awk
या sed
के साथ कैसे कर सकता हूं।
वाह ... यह काम करता है। मैं वास्तव में समझने के लिए शाखाओं का लटका पाने की कोशिश कर रहा हूं कि क्या हो रहा है। – rmarimon
"बीए" शाखाओं को "BEGIN" के लिए परीक्षण से जुड़े ब्रेसिज़ के भीतर "ए" लेबल करने के लिए और "बी" शाखाएं अंत में जब "ईएनडी" मिलती है क्योंकि यह उस परीक्षण से जुड़े ब्रेसिज़ के सेट में होती है। यह 'if/BEGIN/फिर फ़ाइल को पढ़ने जैसा है; जबकि नहीं/अंत/रेखा छोड़ें '। –
मुझे इसके साथ एक वाक्यविन्यास त्रुटि मिलती है: 'sed: -e अभिव्यक्ति # 1, char 39: अप्रत्याशित '}'' –