我知道SO How can I replace mutliple empty lines with a single empty line in bash?中存在类似的问题。但我的问题是,这可以通过使用sed
命令来实现吗?
由于
答案 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 告诉打印此范围。