3
我有一個包含許多SVG的文件夾。從所有SVG中,我需要刪除具有特定ID的標籤。有太多的文件需要手工完成,所以我一直在研究一個shell腳本來爲我做,但無法弄清楚如何使用xmlstarlet去除標籤。使用xmlstarlet通過id刪除SVG中的節點
例如,假設我們有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>
然後發出命令: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>
,但事實並非如此。 bar.foo仍然包含<g id="delete"/>
。
有誰知道刪除<g id="delete"/>
標記的正確命令?或者我可以使用任何其他工具來批處理SVG文件以擺脫不需要的標記?
乾杯,多米尼克
感謝您指出了這一點,我現在修正了錯字。 – user473453