我在寫一個bash腳本,我需要它對XML文件進行更改,用「disabledController」替換一堆不同的servlet名稱項目。修改XML文件中的字符串,但不更改相同的字符串
我知道我可以使用sed來做到這一點,但是有兩條不同的線具有相同的字符串,但只有一條需要更改。
例如,我需要改變這樣的:
<servlet>
<servlet-name>CreateCertificateAuthorityBackup</servlet-name>
<servlet-class>com.company.ca.CABackup</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CreateCertificateAuthorityBackup</servlet-name>
<url-pattern>createCertificateAuthorityBackup</url-pattern>
</servlet-mapping>
進入這個:
<servlet>
<servlet-name>CreateCertificateAuthorityBackup</servlet-name>
<servlet-class>com.company.ca.CABackup</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>disabledControler</servlet-name>
<url-pattern>createCertificateAuthorityBackup</url-pattern>
</servlet-mapping>
如果我用sed像這樣:
sed "[email protected]<servlet-name>CreateCertificateAuthorityBackup.*@<servlet-name>disabledController</servlet-name>@"
它取代了servlet的名字物品而不是第二個。有沒有辦法做我想在這裏做的事情?
我認爲xmlstarlet有一個選項可以做到這一點 – BeniBela 2013-02-11 01:23:45