GNU sedを使用して特定の行と次の空行を削除する方法は?

GNU sedを使用して特定の行と次の空行を削除する方法は?

次のテキストがあります。

Start-Date: 2013-11-11  07:43:49
Commandline: apt-get install --no-install-recommends catfish

Start-Date: 2013-11-11  11:27:07

Start-Date: 2013-10-16  22:53:02

Start-Date: 2013-10-16  22:55:16

Start-Date: 2013-10-17  22:41:09

Start-Date: 2013-10-17  22:42:02

Start-Date: 2013-10-17  22:42:33

Start-Date: 2013-10-17  22:46:01

Start-Date: 2013-10-17  23:00:06
Commandline: apt-get install shimmer-themes

Start-Date: 2013-10-17  23:01:52
Commandline: apt-get install --no-install-recommends gedit

「開始日」で始まる行と次の空行を削除したいと思います。つまり、私はただ次のことをしたいと思います:

Start-Date: 2013-11-11  07:43:49
Commandline: apt-get install --no-install-recommends catfish

Start-Date: 2013-10-17  23:00:06
Commandline: apt-get install shimmer-themes

Start-Date: 2013-10-17  23:01:52
Commandline: apt-get install --no-install-recommends gedit

私の質問が重複していないことを願っています。特定の文字列を含む行と次の行を削除します。

ベストアンサー1

sed '/^Start-Date:/ {N; /\n$/d}'

sedは、ライングループを吸収/認識し、目的の操作を実行するストリームエディタです。

N「現在のバッファに改行と次の入力ラインを追加します」なので、バッファ\nにあるのは追加されたラインの先頭です。/\n$/dこれは、「バッファに最後に追加された行が空の場合はすべて削除」を意味します。

おすすめ記事