sedはhtmlタグを見つけて置き換えます。

sedはhtmlタグを見つけて置き換えます。

mdファイル(通常のテキスト)で見つけて置き換える必要があります。

<span class="symbol">&#58771;</span>

これで:

[&#58771;]{custom-style="symbol"}

何度も試してみましたが、何もできませんでした。

sed -i -e 's/\(<span class=\"symbol\">\)&#58771;\(<\/span>\)/\[/&#58771;\]/\{custom-style=\"symbol\"\}/g'myfile.md

または

sed -i -e "s#<span class=\"symbol\">&#58771;</span>#[&#58771;]{custom-style=\"symbol\"}#g" "Dignità umana e bioetica".md

ただし、常に次のエラーメッセージが表示されます。

sed: -e expression #1, char 40: unknown option to `s'

これうまくいくようです(エラーメッセージはありません)。

sed -i -e "s@<span class=\"symbol\">&#58771;</span>@[&#58771;]{custom-style=\"symbol\"}@g" myfile.md

しかし、私はこのコードを受け取りました。

[<span class="symbol">&#58771;</span>#58771;]{custom-style="symbol"} 

新しい文字列は次へ追加、古いものを交換しないでください。

解決済み

おっしゃるとおり、このコマンドは機能します。

sed -i -e 's@<span class="symbol">\&#58771;<\/span>@[\&#58771;]{custom-style="symbol"}@g'

ベストアンサー1

これは働きます:

sed -i -e "s@<span class=\"symbol\">&#58771;</span>@[\&#58771;]{custom-style=\"symbol\"}@g" myfile.md

\代替テキストが特別なので、その前に使用する必要が&正しく動作します&。これは、「パターンに一致する入力の全部分」を意味する。

からman sed

s/正規表現/交換/

代替項目には、パターン空間の一致する部分を表す特殊文字&、正規表現で一致する対応するサブ式を表す特殊エスケープ文字\ 1〜\ 9を含めることができます。

おすすめ記事