
サンプル入力は
1
2
3
4
5
6
7
8
9
期待される出力は
1
2
3
---
4
5
---
6
7
8
---
9
答え1
一方通行:
cat -s file | sed 's/^$/---/'
cat のマニュアルページより:
-s, --squeeze-blank
never more than one single blank line
cat
空白行を圧縮したら、空白sed
を---
答え2
AWK の複数行レコード機能 (null RS) を使用した POSIX 準拠のアプローチ:
awk 1 RS= ORS='\n---\n' file
これにより、最後の「---」行を除いて、希望の出力と同一の出力が生成されます。この不一致が許容できない場合は、sed フィルターを使用して除去できます。
... | sed '$d'