XMLでコメントを削除するにはどうすればよいですか?Vim - XMLコメントを削除する
開始と終了のコメントタグが同じ行にある場合は、:g/^<!--.*-->$/d
を使用してコメントを削除します。多くの行に広がっているコメントを削除するには?
XMLでコメントを削除するにはどうすればよいですか?Vim - XMLコメントを削除する
開始と終了のコメントタグが同じ行にある場合は、:g/^<!--.*-->$/d
を使用してコメントを削除します。多くの行に広がっているコメントを削除するには?
\_.
代わりの.
は、改行を含むすべての文字に一致することができます試すことができます。しかし、それだけで正規表現エンジンはデフォルトで貪欲であるため、船外に出ることになります。非貪欲な一致の場合は*
の代わりに\{-}
を使用してください。
g/ /d
コマンドは1行だけを削除するため(複数行一致の場合でも)s///g
(グローバル置換)に切り替えることをお勧めします。
:%s/<!--\_.\{-}-->//g
XSLTを使用してファイルを新しいファイルに変換する必要があります。アイデンティティ変換を使用して、コメントをコピーしないようにする追加のルールを使用します。あなたは私はあなたがvimのから実行することができます想像スクリプトとしてこれを行うには、Linux上でlibxsltのパッケージに「xsltprocの」を使用することができ
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="comment()"/>
。
私は、これは動作するはずと信じて:
:g/<!--.*?-->/d
疑問符が、それは式を満たすためにできるだけ一致する意味、アスタリスクは「怠惰」の代わりに「貪欲」になります。これは、この例の中央部分を取り除いからの発現を防ぐ:
We want to keep this<!-- This is a comment -->We also want to keep this<!-- Another comment -->
EDIT:正規表現のvimの味のように見えるが*?
怠惰なマッチングをサポートしていません。私の悪い。
何マルチラインについて? – ghostdog74
あなたのシステムにあまりにも多くの手間とあなたが気づいていない場合は、あなたはこの
$ more file
<!--
asdlfj
sdjf
;jsgsdgjasl -->
text i want
i want
....
<!-- junk junk -->
i want text
anthor text
end
$ gawk -vRS='-->' '{ gsub(/<!--.*/,"")}1' file
text i want
i want
....
i want text
anthor text
end
gsub()コールの最後に "1"を説明できますか? –
あなたは別の方法で書くことができます:gawk -vRS = ' - >' '{gsub(/
da>はうまくいきます。ファイルからこれを繰り返す方法を教えてください。 –
@Vijay、申し訳ありませんが、私は分かりません。提案された元のregexpを使用する必要があります。 –
これは素晴らしいことでした!ありがとう! –