Zkuste použít houbu od moreutils takto:
sed "s/root/toor/" /etc/passwd | grep -v joey | sponge /etc/passwd
Shromažďuje celý vstup před zápisem na jeho výstup.
Hádal bych, že sed stále může vytvořit dočasný soubor, ale následující může dělat, co chcete? (Použití strace vám může ukázat, zda sed vytváří dočasný soubor nebo ne).
sed -i '/bar/!d' foo.txt
Vykřičník převrátí shodu, d je pro smazání, takže tím se odstraní všechny řádky, které neobsahují pruh.