sedを使用してファイルを変更するときは、どの文字をエスケープする必要がありますか? [コピー]

sedを使用してファイルを変更するときは、どの文字をエスケープする必要がありますか? [コピー]

次のsedコマンドを使用しています(単語の境界を含む)。

sed "7 s/\<<Filevalue=.*/>\>/<Filevalue="true"/>/" < config.xml

次のエラーが発生します。

sed: command garbled: 7 s/\<<Filevalue=.*/>\>/<Filevalue="true"/>/

特殊文字をエスケープしようとしましたが、まだ同じエラーが発生します。

sed "7 s/\<\<Filevalue=.*\/\/\>\>/\<Filevalue=\"true\"\/\>/" < config.xml

私は何が間違っていましたか?

編集する:

これはダミーXMLです。ファイル値の値は異なる場合があります。

XMLコンテンツ:

<Filevalue="false">
<Filevalue="false">
<Filevalue="false">
<Filevalue="false">
<Filevalue="false">
<Filevalue="false">
<Filevalue="false">

ベストアンサー1

また、区切り文字として使用できないスラッシュはバックスラッシュとして扱うか、別の区切り文字を使用する必要があります。

sed "7 s%\<<Filevalue=.*/>\>%<Filevalue="true"/>%"

また、バックスラッシュを使用せずに二重引用符内に二重引用符を含めたり、二重引用符に切り替えることはできません。

また、単語はで始めることができないため、<絶対\<<一致しません。

おすすめ記事