linux - 用空格替换所有双换行符

ner*_*lov 4 linux bash awk sed

是否可以使用 sed、awk、grep、tr 或任何需要的东西只替换文本文件中的双换行符?

this

is

data
this

is

more

data
Run Code Online (Sandbox Code Playgroud)

我需要做的是用空格替换所有双换行符(\n\n,没有空格),但保留所有单换行符,以使我的所有数据点都在自己的行上。

this is data
this is more data
Run Code Online (Sandbox Code Playgroud)

这可能吗?

Mar*_*iae 8

尝试

    sed ':a;N;$!ba;s/\n\n/ /g'  filename
Run Code Online (Sandbox Code Playgroud)

这将首先读取整个文件,然后用空格替换双换行符(只有那些!)。这个技巧(读取整个文件)是必要的,因为大多数 GNU/Linux 实用程序一次处理一行输入,这会给你错误的结果。


Has*_*tur 5

只是另一个变体:一个awk版本

awk 'BEGIN{RS="\n\n" ; ORS=" ";}{ print }' 
Run Code Online (Sandbox Code Playgroud)