Você pode fazer
sed -n '/^$/{:l; p; n; b l}' file
O -n
suprime a saída normal. Quando você alcança a primeira linha em branco, que é correspondida com o padrão /^$/
, ela inicia um loop que imprime todas as linhas subseqüentes.
Estou tentando remover o conteúdo do começo do texto para a primeira linha em branco.
--($:~)-- cat example.txt
pedro
pablo
juan
francisco
emiliano
martin
Então, eu excluiria:
pedro
pablo
juan
Eu tentei com:
sed -n '/^/,/^$/ d' example.txt
mas não funciona.
Você pode fazer
sed -n '/^$/{:l; p; n; b l}' file
O -n
suprime a saída normal. Quando você alcança a primeira linha em branco, que é correspondida com o padrão /^$/
, ela inicia um loop que imprime todas as linhas subseqüentes.
com sed
:
sed -n '/^$/,$p' file
ou:
sed -e '/^$/,$!d' file
com awk
:
awk '/^$/{p++};p' file
Com um recente ksh
(você precisa de ksh93s
ou acima), você poderia fazer:
cat <example.txt <#""
sed -e 1,/^$/c\ -e '' <infile >outfile
... também funcionaria.
Ao contrário do comando 1,/^$/d
o c\
<EOF>
, d
elete o intervalo de endereços, mas c
trava o bloco inteiro em uma única string . E assim, isso não removerá a primeira linha em branco da saída - porque c
trava todo o primeiro bloco de texto que está ocorrendo na entrada (delimitado pela primeira linha em branco) para uma única linha em branco.