sponge buffers the whole input before writing the output. Its utility would be in reading from a file, working on it with other tools, and writing the result back to the original file, all in one line.
I know I wanted to do this, but I am very happy such a utility doesn't exist. Unix utilities, usually work in a pipeline fashion, read line -> process -> write to output. This allows them to allocate a limited amount of memory. If you read all input in memory, you are asking for trouble: 'cat /dev/zero | sponge a'.
I routinely operate on machines with gigabytes of memory, but rarely write pipelines which output gigabytes of data, so this has never been a concern for me. But even then, there’s still swap space which is effectively like using a temp file but lazier.
By the way, I think you’d be in even more trouble if you wrote:
kyran_adept|5 years ago
zeroimpl|5 years ago
By the way, I think you’d be in even more trouble if you wrote:
FeepingCreature|5 years ago
thomashabets2|5 years ago
sed -i 's/root/toor/;/joey/d' /etc/passwd
But I get your point.
thomashabets2|5 years ago