如何用特定的非空白行替換多個空白行?

如何用特定的非空白行替換多個空白行?

樣本輸入是

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'

相關內容