Se você quiser apagar todas as linhas em branco começando com a linha 5 e manter as linhas 1 a 4, você pode usar
sed -i '5,${;/^$/d;}' temp_spec.rb
O {
é o operador de agrupamento, portanto, o primeiro comando 5,${
significa "da linha 5 até o final da entrada ( $
) executar os comandos a seguir até coincidir com }
". Os comandos entre {
e }
podem ser prefixados novamente por endereços, então o comando interno /^$/d
significa "se não houver nada entre início ( ^
) e fim ( $
) da linha, exclua ". Comandos Sed podem ser separados por ;
. (Esse é um recurso mal documentado do sed. Ele é suportado pela maioria das implementações de sed, mas é não totalmente portáveis .) Como observado por Hauke, o ;
after {
é opcional; o antes de }
é necessário.
Se você quiser excluir todas as linhas em branco começando com a linha 5 e também excluir as linhas de 1 a 4, é mais fácil:
sed -i '1,4d;/^$/d' temp_spec.rb