ファイルから複数の空行を削除する方法は?

ファイルから複数の空行を削除する方法は?

メモに使用するテキストファイルがあります。プレーンテキストのみを使用し、一般的にcat >> file。各セッションの終わりに、通常はCtrl+でファイルを閉じる前に、セッションを区切るためにD多数の空白行(Enter)を追加します(5-10)。

これは明らかにそれほどスマートではありませんが、私にとっては効果的です。私するしかし、不要な空白行がたくさんあるので、私は余分な行(ほとんど)を削除する方法を探しています。複数のオプションで直接使用できるLinuxコマンド(切り取り、貼り付け、grep...?)はありますか?または、私が望むことを達成するためにsed、awk、またはperl(実際にはsedまたはawkを好むがすべてのスクリプト言語で利用可能)スクリプトを知っている人はいますか? C ++で何かを書くこと(実際には自分でできること)があまりにも過度だと思いました。

状況#1:私に必要なのは、2つ以上の連続した空行を削除し、それを2つの空行に置き換えることができるスクリプト/コマンドです。ただし、1つ以上の行(2つ以上)を削除したり、複数の空白行を1つに置き換えたりする場合にも適用できると思います。

ケース#2:スクリプト/コマンドを使用して削除することもできます。一つ2行のテキストの間に空白行がありますが、複数の空白行が残ります(そのうちの1つを削除することも許可されています)。

ベストアンサー1

ケース1:

awk '!NF {if (++n <= 2) print; next}; {n=0;print}'

ケース2:

awk '!NF {s = s $0 "\n"; n++; next}
     {if (n>1) printf "%s", s; n=0; s=""; print}
     END {if (n>1) printf "%s", s}'

おすすめ記事