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