次のようなタグが散らばっているいくつかのxmlファイルがあります。
<?xm-insertion_mark_start author="some_author" time="20050602T125956-0500"?>
そのような挿入物を取り除くにはどうすればよいですか? 私はこれを利用しようとしました:
sed -e 's/<\?xm.*?\?>//g' in.xml > out.xml
次のようなタグが散らばっているいくつかのxmlファイルがあります。
<?xm-insertion_mark_start author="some_author" time="20050602T125956-0500"?>
そのような挿入物を取り除くにはどうすればよいですか? 私はこれを利用しようとしました:
sed -e 's/<\?xm.*?\?>//g' in.xml > out.xml
sed には、気が進まない (「貪欲ではない」) 量指定子がありません。これを試して:
sed '/<?xm\([^?][^>]\)\+?>/d' in.xml > out.xml
編集: もちろん、XSLT を使用して XML から処理命令 (PI) を安全に削除することもできます。
これにより、指定されたすべての PIxm-insertion_mark_start
が削除されますが、残りの XML はすべてそのまま残ります。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node() | @*" />
</xsl:copy>
</xsl:template>
<xsl:template match="processing-instruction('xm-insertion_mark_start')" />
</xsl:stylesheet>
使用する
<xsl:template match="processing-instruction()" />
名前に関係なく、すべてのPIを削除する場合。
を使用xsltproc(1)
して、コマンド ラインで XML に変換を適用できます。