sedまたは正規表現パターンを使用してファイルからバックスラッシュの後に続くテキストを削除する方法

sedまたは正規表現パターンを使用してファイルからバックスラッシュの後に続くテキストを削除する方法

私のファイルには次のものがあります。 "monitoring"テキストとmonitoring/サフィックス()のバックスラッシュを削除する必要があります。

 <base  href="/monitoring/" />

その後、出力は次のようになります

<base  href="/" />

sedまたは他の方法でこれを達成できます。

ベストアンサー1

文書が正しい形式のXML文書であるとします。

<?xml version="1.0"?>
<root>
  <base href="/monitoring/"/>
</root>

xmlstarlet次のコマンドは、対応する文字列monitoring/(およびそれに続くすべての項目)を含むノード属性から削除します。basehref

xmlstarlet ed \
    -u '//base/@href[contains(.,"monitoring/")]' \
    -x 'substring-before(.,"monitoring/")' file.xml

これにより、新しい名前にリダイレクトし、元のファイルをその名前に置き換える必要があるXML文書が出力されます。

おすすめ記事