2016-08-17 11 views
0

私は1行のコメントを外す必要があるxmlファイルを持っています。 私はsedコマンドでこれをやっています。sedを組み合わせて1つのパターンを検索し、複数のパターンを削除する方法

<!-- <file file="${result.file}"/> --> 

私はコマンド

sed -i '/file="${result.file}/s/<!--//' file.xml 
sed -i '/file="${result.file}/s/-->//' file.xml 

を使用これは動作しますが、私は私がこれらのコマンドを組み合わせて、一つだけsedコマンドで置き換えるんか考えていました。

+0

は、私はXML/HTMLパーサ(xmllint、xmlstarletを...)を使用することをお勧めように、あなたのQを書き換えることができます。 – Cyrus

答えて

2

それは次のようになります。

sed 's#<!-- \(<file file="${result.file}"/>\) -->#\1#' file 

私はキャプチャグループにコメントの内容をキャプチャしています。置換パターンでは、一致するグループの内容を出力するだけで、コメント開始、コメント終了を省略します。

+0

しかし、これはより効率的なソリューションです。皆さんお元気で。 – shellter

+0

sed:-e式#1、char 51: 's 'に未知のオプション –

+0

@MohitArora Ups、申し訳ありません。私はxmlタグで '/'をエスケープするために行方不明でした。おそらく、この場合、 '# 'はよりよい区切り文字です。それを変更しました。 – hek2mgl

1

sedコマンドを; charで区切ってチェーンすることができます。

sed -i '/file="${result.file}/s/<!--// ; /file="${result.file}/s/-->//' file.xml 

IHTH

関連する問題