簡體   English   中英

如何使用Shell腳本sed命令替換XML文件屬性?

[英]How do I replace atributes of XML file by using shell scripting sed command?

<?xml version='1.0' encoding='utf-8'?>
<widget id="io.ionic.starter" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
...
</widget>

如何使用sed替換小部件中的ID和版本?

Sed不是處理XML的正確工具,因為屬性可能以不同的順序和/或不同的行出現,同時仍保持相同的語義。

使用XML感知工具。 例如,在xsh (由我當前維護的XML :: LibXML的包裝器)中,您可以編寫

open file.xml ;
register-namespace w http://www.w3.org/ns/widgets ;
set /w:widget/@id "new.id" ;
set /w:widget/@version "0.0.2" ;
save :b ;  # :b creates a backup.

使用xmlstarlet:

xmlstarlet edit -N x='http://www.w3.org/ns/widgets' \
                --update "//x:widget/@id" --value "foo" \
                --update "//x:widget/@version" --value "bar" file.xml

輸出:

<?xml version="1.0" encoding="utf-8"?>
<widget xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0" id="foo" version="bar">
...
</widget>

如果要就地編輯文件,請添加選項-L

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM