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