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.