sedで連続した空行を単一の空行に置き換える方法は?

sedで連続した空行を単一の空行に置き換える方法は?

私は連続した空の行(もっと明確に言えば空の行だけ)を持ちたいファイルを持っています。全部一つに交換したいです。

むしろsed(IMHOこれはawk些細なことです)。

答え1

連続した空行(ゼロ文字行)を圧縮するには、次を使用できます。N;P;D cycle:

sed '$!N;/^\n$/!P;D' infile

連続した空行を圧縮するには、空白を考慮して正規表現を変更します。

sed '$!N;/^[[:blank:]]*\n[[:blank:]]*$/!P;D' infile

答え2

お持ちの場合牛に似た一種の栄養 sed使用可能な場合(スクリプトと競合しない)、-zゼロで区切られた行フラグを使用してから、次のように単純な正規表現を使用できます。

sed -z 's/\n[\n ]*/\n/g' infile

-zこれはいいえPOSIX。

関連情報