sponge - soak up standard input and write to a file


sed '...' file | grep '...' | sponge file


sponge reads standard input and writes it out to the specified file. Unlike a shell redirect, sponge soaks up all its input before opening the output file. This allows constructing pipelines that read from and write to the same file.

It also creates the output file atomically by renaming a temp file into place, and preserves the permissions of the output file if it already exists. If the output file is a special file or symlink, the data will be written to it.

If no output file is specified, sponge outputs to stdout.


Colin Watson and Tollef Fog Heen