Dコマンド

大文字のDコマンドは、現在のパターンスペースに改行が含まれている場合は最初の改行までを削除し、残りのパターンスペースをもって、次の入力行は読まずにスクリプトの最初から開始する。それ以外はdコマンドと同様。


連続する空行を1行の空行に

input='あ

い



う


え
'

script='/^$/ {
  N
  /^\n$/ D
}'

echo "$input" | sed "$script"

上記は、入力が空行に達すると、Nコマンドにより次の行がパターンスペースに追加となる。それによりパターンスペースが連続する空行(^\n$という正規表現)なら、Dコマンドで最初の改行までが削除され、残りのパターンスペースはそのままで次の入力行は読み込まずにスクリプトの最初から開始する。出力はこうなる。

あ

い

う

え