
樣本輸入是
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 的多行記錄功能(空 RS)的 POSIX 相容方法:
awk 1 RS= ORS='\n---\n' file
這會產生與您所需的輸出相同的輸出,除了最後的“---”行。如果這種差異不可接受,可以使用 sed 過濾器消除:
... | sed '$d'