![删除开头到第一个空行的内容](https://linux22.com/image/66368/%E5%88%A0%E9%99%A4%E5%BC%80%E5%A4%B4%E5%88%B0%E7%AC%AC%E4%B8%80%E4%B8%AA%E7%A9%BA%E8%A1%8C%E7%9A%84%E5%86%85%E5%AE%B9.png)
我正在尝试删除从文本开头到第一个空行的内容。
--($:~)-- 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
会挂起输入中第一个出现的整个文本块(由第一个出现的空行分隔)到一个空行。