我正在尝试删除从文本开头到第一个空行的内容。
--($:~)-- 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,/^$/d
c\
<EOF>
命令并不d
准确地删除地址范围,而是c
将整个块挂起到单个字符串。所以这不会从输出中删除第一个空行 - 因为它c
会挂起输入中第一个出现的整个文本块(由第一个出现的空行分隔)到一个空行。