Você pode usar sed
para ler até a primeira linha em branco e, em seguida, usar cat
para ler o restante, o que seria mais eficiente para arquivos grandes:
{ sed -n '/./!q;p'; cat; } < the-file
Ele só funciona com arquivos regulares (não com pipes porque sed
lê dados por blocos e não pode buscar de volta para a linha depois daquele em que q
foi chamado se a entrada não for procurada). Conforme observado por @ peterph, com GNU sed
versão 4.2.2 e acima, você pode adicionar o -u
flag que faz com que o GNU sed
leia sua entrada um byte de cada vez (e imprima uma linha por vez) e elimina o problema com pipes (embora degradando o desempenho).