如何更换许多中间空行,每行只有一个空白行

xyz*_*xyz 2 shell awk newline sed

我正在学习使用sed并有一个假设的要求:

bash$ cat states
California


Massachusetts


Arizona

Wisconsin
Run Code Online (Sandbox Code Playgroud)

我想输出:(基本上我只需要一个空行)

California

Massachusetts

Arizona

Wisconsin
Run Code Online (Sandbox Code Playgroud)

请建议使用sed的方法.它应该使用多线模式空间等的概念吗?

谢谢,

Jagrati


回答其中一条评论,好的,我运行了一些测试脚本,而错误的假设是地址空间选择标准只应用一次.它似乎一次又一次被激活.

bash$ cat file 
a 
b 
c 
a 
b 
c 

bash$ sed -e '/a/,/b/s/$/x/g' file 
ax 
bx 
c 
ax 
bx 
c 
Run Code Online (Sandbox Code Playgroud)

我的印象是它会产生:

ax 
bx 
c 
a 
b 
c
Run Code Online (Sandbox Code Playgroud)

那么有人可以解释在逗号分隔的地址空间的情况下sed是如何进行的.

dal*_*ton 6

试试这个会删除所有连续的空白行

cat states | sed '/./,/^$/!d'
Run Code Online (Sandbox Code Playgroud)

输出:

California

Massachusetts

Arizona

Wisconsin
Run Code Online (Sandbox Code Playgroud)