sed段落タグ

sed段落タグ

各段落{p}の前後に段落タグを使用して段落をプレーンテキストで囲む方法は?各段落は空行で区切られます。テキストファイル内のすべての空白行を見つけるために使用できますが、常に{p}がどこにでも挿入され、それを変更する方法がわかりません。また、最後の段落の後には空行がないので、最後の段落では何もしません。{/p}sedsed -e 's/^\s*$/<r>/ somefile.txt

テキスト入力:

Section 5. General Information About Project Gutenberg-tm electronic
works.

Description

Professor Michael S. Hart is the originator of the Project Gutenberg-tm
concept of a library of electronic works that could be freely shared
with anyone.

Project Gutenberg-tm eBooks are often created from several printed
editions, all of which are confirmed as Public Domain in the U.S. unless
a copyright notice is included.

希望の出力:

Section 5. General Information About Project Gutenberg-tm electronic
works.
{p}
Description
{/p}
{p}
Professor Michael S. Hart is the originator of the Project Gutenberg-tm
concept of a library of electronic works that could be freely shared
with anyone.
{/p}
{p}
Project Gutenberg-tm eBooks are often created from several printed
editions, all of which are confirmed as Public Domain in the U.S. unless
a copyright notice is included.
{/p}

ベストアンサー1

最初にソリューションをリクエストしたので、sed次のいずれかを添付します。

sed '/./{H;1h;$! d}
g;/{p}$/d
s#^{p}.*#&\n{/p}#;p
s/.*/{p}/;h;d' somefile.txt

説明する

  • 行1:空でない行を保持バッファに追加します(改行で開始したくない場合は、最初の行を追加する代わりにコピー)。空行またはファイルの終わりを処理し続けます。
  • 行2:複数の空の行またはバッファーの末尾にある空の行を処理するためにテキストのないバッファーを無視します。
  • 行3:開くタグがある場合は終了タグを追加します。その後、印刷します。
  • 行4:新しい開始タグで保持バッファを埋めます。

おすすめ記事