sedは文字列を自分と新しい行に置き換えます。

sedは文字列を自分と新しい行に置き換えます。

私のHTMLファイルに次の文字列が複数回表示されます。

<br> <h4 id=...


さて、sedがhtmlの編集に適していない可能性があることを知っていますが、withに置き換える方法を教えてくださいbr> <h4 id
(ここで「\ n」は新しい行です。andbr>\n <h4 idの間にスペースがあります)?<br><h4...

試してみましたがsed 's/br> <h4 id/br> \n<h4 id/g' report.html成功しませんでした。このstackexchangeにはsedと改行の交換に関する他の質問がありますが、私の場合は適用されません。ありがとうございます!

修正する:私はWindowsコンピュータでVisual Studio Code bashターミナルと(Git)Bashを実行しています(一種のMINGW64です)。

ベストアンサー1

コマンド置換セクションの改行文字は、改行文字が続くように移植可能にs sed表示されます。\

sed 's/br> <h4 id/br>\
<h4 id/g' report.html

または:

sed 's/\(br>\) \(<h4 id\)/\1\
\2/g' report.html

一部のsed実装では\nこれを許可しますが、これは非標準拡張です。

いくつかの実装では、(そしてPOSIX標準の次のメジャーバージョンでは標準になる可能性があります)、改行(およびバックスラッシュ文字)に拡張される引用符形式(元のksh93に由来)をsh使用できます。したがって、これを使用して次のことができます。$'...'\n\\

sed $'s/\(br>\) \(<h4 id\)/\1\\\n\2/g' report.html

同じ次のバージョンの標準では、オプション-EsedBSDでsed有効)も導入される予定です。延長する正規表現を使用すると、次のことができます。

sed -E $'s/(br>) (<h4 id)/\1\\\n\2/g' report.html

おすすめ記事