Usando ed :
$ printf '$-1i\nNew line\n.\n,p\n' | ed -s file
1
2
3
New line
4
5
O script de edição ed :
$-1i
New line
.
,p
Isso primeiro move para a linha uma linha a partir do final ( $-1 ) e insere ( i ) novos conteúdos acima dessa linha. O conteúdo inserido é finalizado com o único ponto (é permitido ter várias linhas). O último ,p exibe o buffer modificado completo no terminal.
Você pode redirecionar isso para um novo arquivo, ou você pode escrevê-lo de volta para o arquivo original usando
printf '$-1i\nNew line\n.\nw\n' | ed -s file
(o ,p é alterado para w ).
Este último também é como você usaria de forma semelhante ex para este trabalho:
printf '$-1i\nNew line\n.\nw\n' | ex -s file
ed e ex são editores orientados a linhas padrão (em oposição a editores de tela cheia) que devem vir com o seu sistema. Observe que -s significa coisas diferentes para cada um, mas é apropriado para ambos ao executar tarefas de edição em lote assim.
-
ed. "Shell e utilitários". Especificações básicas . IEEE 1003.1: 2017. O grupo aberto. -
ex. "Shell e utilitários". Especificações básicas . IEEE 1003.1: 2017. O grupo aberto.
Leitura adicional:
- Dale Dougherty e Tim O'Reilly (1987). "Edição Avançada". Processamento de texto Unix . Hayden Books.