如何用特定的非空行替换多个空行?

如何用特定的非空行替换多个空行?

样本输入是

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'

相关内容