Faça isso para contornar os problemas de portabilidade problemáticos com o sinal -i de sed :
sed 'sed-editing-commands' thefile >tmpfile && mv tmpfile thefile
Ou seja, grave em um arquivo temporário e substitua o arquivo de entrada pelo arquivo temporário se o comando sed não falhar.
Isso é portável para todas as implementações de sed que eu conheço.
Para criar um nome de arquivo temporário com segurança, use mktemp . Embora este não seja um utilitário padrão, ele está disponível em todos os Unices aos quais eu tenho acesso (OpenBSD, NetBSD, Solaris, macOS, Linux):
tmpfile=$(mktemp)
sed 'sed-editing-commands' thefile >"$tmpfile" && mv "$tmpfile" thefile