複数の空白行を 1 行に置き換える sed スクリプトを作成しましたが、想定どおりに動作しません。理由を説明してくれる皆さんに感謝します。実際の例を参照しないでください。私は Google に精通しています。sed の仕組みを理解したいだけです。
コードは
sed ':a;/^\n*$/{N;ba};s/^\n\n*/\n/' input_file
ロジックは単純です。sed が行を読み取り、その行が空白であるか、複数の改行記号がある場合 (これが/^*\n$
条件です)、sed に次の行をパターン スペースに追加するように指示します。空白でない行が見つかるとすぐに、置換s/^\n\n*/\n/
が行われます。
ファイルの最後に空白行がある場合を除いて、すべて正常に動作します。これらの空白は単一の空白に置き換えられず、その理由がわかりません。
何か案は?