我可以使用sed命令用一个空行替换多个空行吗?

时间:2010-12-23 17:45:41

标签: sed

我知道SO How can I replace mutliple empty lines with a single empty line in bash?中存在类似的问题。但我的问题是,这可以通过使用sed命令来实现吗?

由于

2 个答案:

答案 0 :(得分:43)

尝试一下:

sed '/^$/N;/^\n$/D' inputfile

答案 1 :(得分:1)

您可以先删除空行并使用 G 命令附加行空格来执行此操作:

sed '/^$/d;G' text.txt

Edit2:上面的命令会在每个段落之间添加空行,如果不需要,你可以这样做:

sed -n '1{/^$/p};{/./,/^$/p}'

或者,如果您不介意所有前导空行将被删除,则可以写成:

sed -n '/./,/^$/p'

因为第一个表达式只计算第一行,如果它是空白则打印它。

此处: -n 选项会抑制模式空间自动打印, /./,/^$/ 定义至少一个字符和无字符之间的范围(即换行符之间的空格), p 告诉打印此范围。