我有一个包含以下内容的文件:
something
something else
something else again
Run Code Online (Sandbox Code Playgroud)
我需要一个bash命令,sed/grep我们将产生以下输出
something
something else
something else again
Run Code Online (Sandbox Code Playgroud)
换句话说,我需要用一个空白行替换多个空白行.grep/sed是基于行的.我从来没有找到适用于多行正则表达式模式的BASH解决方案.
mar*_*rco 78
对于BSD派生系统(包括GNU):
您只需要cat使用-s选项,使其从输出中删除重复的空行:
cat -s
Run Code Online (Sandbox Code Playgroud)
从手册页: -s --squeeze-blank: suppress repeated empty output lines.
WKP*_*lus 18
我刚刚解决了这个问题sed.即使这是一个7岁的问题,有人可以在这里寻求帮助,所以我在sed这里写我的解决方案:
sed 'N;/^\n$/D;P;D;'
Run Code Online (Sandbox Code Playgroud)
big*_*mus 13
grep -A1 . <yourfile> | grep -v "^--$"
Run Code Online (Sandbox Code Playgroud)
这个grep解决方案可以假设您需要以下内容:
输入
line1
line2
line3
line4
line5Run Code Online (Sandbox Code Playgroud)
产量
line1
line2
line3
line4
line5Run Code Online (Sandbox Code Playgroud)
Can*_*der 11
实际上,如果用一个换行替换多个换行符,输出将是:
something
something else
something else again
Run Code Online (Sandbox Code Playgroud)
你可以通过以下方式实现:
sed /^$/d FILE
Run Code Online (Sandbox Code Playgroud)