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.