use*_*453 3 shell svg xmlstarlet
我有一个包含许多SVG的文件夹.在所有SVG中,我需要删除具有特定ID的标记.有太多的文件可以手工完成,所以我一直在研究一个shell脚本为我做这个,但是无法弄清楚如何使用xmlstarlet来删除标签.
例如,假设我们有foo.svg:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg">
<g id="delete"/>
<g id="keep"/>
</svg>
Run Code Online (Sandbox Code Playgroud)
然后发出命令: xmlstarlet ed -d "g[@id='delete']" foo.svg > bar.svg
会导致:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg">
<g id="keep"/>
</svg>
Run Code Online (Sandbox Code Playgroud)
,但事实并非如此.bar.foo仍然包含<g id="delete"/>.
有谁知道删除<g id="delete"/>标签的正确命令?或者我可以使用任何其他工具来批量处理SVG文件来摆脱不需要的标签?
干杯,多米尼克