在Shell中的每个空行后打印所有行

在Shell中的每个空行后打印所有行,shell,awk,sed,Shell,Awk,Sed,我正在尝试打印文件中每一空行之后的所有行。有人能建议在shell中使用命令吗 示例文件: line1 line2 line 3 line 4 line 5 line 7 line 6 预期产出: 第3行

我正在尝试打印文件中每一空行之后的所有行。有人能建议在shell中使用命令吗

示例文件:

line1                                                                        
line2

line 3                                                                        
line 4

line 5
line 7

line 6
预期产出:

第3行
第4行
第5行
第7行
第6行


请您仅在显示的示例中尝试以下内容,并使用GNU
awk
编写和测试

awk'/^$/{found=1;next}found&!/^$/'输入文件
输出如下

line 3
line 4
line 5
line 7
line 6
说明:添加上述解决方案的详细说明

awk '             ##Starting awk program from here.
/^$/{             ##Checking if a line is an empty line then do following.
  found=1         ##Setting found to 1 here.
  next            ##next will skip all further statements from here.
}
found && !/^$/    ##Checking condition if found is SET and line is NOT empty then print that line.
' Input_file      ##Mentioning Input_file name here.
这可能适用于您(GNU-sed):

使用
-n
选项关闭隐式打印

丢弃所有行,直到第一行为空,然后只打印非空行。

另一行:

sed-n'/^$/,${//p}
对于地址范围
/^$/,$
(从第一行到最后一行),打印非空行(
//p


对于macOS sed,使用
{//p;}
(额外分号)。

可以在一个非常简单的
awk
中完成,其中包含一个空的
RS
,按每一空行分解输入:

awk -v RS= 'NR>1' file

请在您的问题中以代码的形式添加您的努力,我们非常鼓励您这样做。
在每一个空行之后
第4行
不是(右)在一个空行之后。我已经编辑了示例输出。要求在每一空白行之后打印所有行。因此,这些样本是切中要害的。另外,我正在努力。如何区别于在空白行之前删除所有行,并删除所有空白行?在您的示例输入中,第六行(空)出现在第3行的空行之后。根据“每一空行后打印所有行”的说明,应打印第6行(空行)。您需要正确指定您的要求。
awk -v RS= 'NR>1' file
line 3
line 4
line 5
line 7
line 6