Does sed allow in-place file replacement, or do you need to redirect to a different file then cp/mv it over the original? I haven't used it in many years, but sed didn't used to allow this.
Note: "cmds" is one or more s commands. For other commands, if it's a big file, I will just pipe through less (still no temp file) and then save the buffer (to overwrite the original file), instead of using this hack.
A hack for in-place editing, for old school sed (no -i):
sedi(){
case $# in
0) echo usage: sedi cmds file;;
2) sed -an '
'"$1"';
H;
$!d;
g;
w '"$2"'' $2;;
esac;
}