<?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?
替换widget中的id和version答案 0 :(得分:1)
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.
答案 1 :(得分:1)
使用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
。