remove o conteúdo do começo para a primeira linha em branco

2

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.

    
por Teb 05.06.2015 / 23:42

4 respostas

1

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.

    
por 06.06.2015 / 01:35
1

com sed :

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

ou:

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

com awk :

awk '/^$/{p++};p' file
    
por 06.06.2015 / 04:36
1

Com um recente ksh (você precisa de ksh93s ou acima), você poderia fazer:

cat <example.txt <#""
    
por 06.06.2015 / 10:11
1
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.

    
por 06.06.2015 / 13:15