sed é a maneira correta de fazer isso, mesmo que você tenha dito que, por algum motivo, não quer usar sed .
O script sed seria parecido com
$i\
this is test4\
this is test5
e você executaria isso como sed -f script.sed file . O comando i insere linhas antes da linha endereçada e o $ endereça a última linha do arquivo.
Como um "one-liner" usando o GNU sed :
$ sed -e '$i\' -e ' this is test4\' -e ' this is test5' file
{
This is test1
this is test2
this is test3
this is test4
this is test5
}
Dependendo se o arquivo é, na verdade, um arquivo JSON ou em algum outro formato de texto estruturado, pode haver ferramentas como jq que são mais adequadas para manipulá-lo.
Para usar echo conforme solicitado (isso também pressupõe que você esteja usando head do GNU coreutils, pois a opção -n geralmente não recebe um número negativo):
{ head -n -1 file
echo ' this is test4'
echo ' this is test5'
tail -n 1 file; } >newfile