sed '...' file | grep '...' | sponge [-a] file
sponge preserves the permissions of the output file if it already exists.
When possible, sponge creates or updates the output file atomically by renaming a temp file into place. (This cannot be done if TMPDIR is not in the same filesystem.)
If the output file is a special file or symlink, the data will be written to it, non-atomically.
If no file is specified, sponge outputs to stdout.
- Replace the file with a new file that contains the file's original content, with the standard input appended to it. This is done atomically when possible.