Sed corresponde a linhas inteiras, mas não inclui a nova linha, portanto, uma linha em branco será apenas uma string vazia. Você pode usar ^
para corresponder ao início de uma linha e $
para corresponder ao final, então ^$
corresponde a uma linha em branco. Apenas substitua por % ghi\n%
:
sed 's/^$/% ghi\n%/'
A nova linha que já existia permanecerá, então você vai acabar com % ghi
em uma linha e %
na próxima
Editar : se precisar corresponder apenas uma vez, a expressão será um pouco mais complicada. A maneira mais fácil de fazer isso em sed
é:
sed '0,/^$/ s/^$/% ghi\n%/'
A substituição é agrupada em um intervalo de endereços 0,/^$/
, o que significa "aplicar somente o seguinte às linhas entre 0 e a primeira linha que corresponde a ^$
". Como a expressão de substituição também verifica ^$
, a única linha que realmente vai mudar é a primeira que corresponde a ^$
- a primeira linha em branco