删除开头到第一个空行的内容

删除开头到第一个空行的内容

我正在尝试删除从文本开头到第一个空行的内容。

--($:~)-- cat example.txt   
pedro
pablo
juan

francisco 
emiliano
martin

所以,我会删除:

pedro
pablo
juan

我尝试过:

sed -n '/^/,/^$/ d' example.txt  

但它不起作用。

答案1

你可以做

 sed -n '/^$/{:l; p; n; b l}' file

抑制-n正常输出。当到达与模式匹配的第一个空行时/^$/,它会启动一个循环来打印所有后续行。

答案2

sed

sed -n '/^$/,$p' file

或者:

sed -e '/^$/,$!d' file

awk

awk '/^$/{p++};p' file

答案3

使用最近的ksh(您需要ksh93s或以上),您可以执行以下操作:

cat <example.txt <#""

答案4

sed -e 1,/^$/c\\ -e '' <infile >outfile

...也可以。

1,/^$/dc\<EOF>命令并不d准确地删除地址范围,而是c将整个块挂起到单个字符串。所以这不会从输出中删除第一个空行 - 因为它c会挂起输入中第一个出现的整个文本块(由第一个出现的空行分隔)到一个空行。

相关内容