POSIX não exige sed -i porque é redundante e também não está alinhado com o propósito original de sed . sed foi originalmente criado para editar streams (daí seu nome s tream ed itor), não arquivos. A ferramenta correta no POSIX para editar arquivos de forma não interativa é ed
printf "/text/d\nw" | ed file.txt
Infelizmente, muitos sistemas atuais acham que
ed é obsoleto e não o fornece por padrão, mesmo que seja obrigatório pelo POSIX ... Mas pelo menos ele deve ser facilmente instalado na maioria dos sistemas (ao contrário do GNU sed, que pode exigir a compilação do código-fonte).
EDIT: Além disso, ao contrário do que o texto da pergunta implica, o comando d de (s)ed faz mais do que deletar a string dada, ele apaga qualquer linha que a contenha. / p>