样本输入是
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'