strace ou similar mostrará as chamadas do sistema usadas por sponge , o que provavelmente é para write(2) a entrada read(2) da entrada padrão para um arquivo temporário e, em seguida, para rename(2) esse arquivo temporário para o nome do arquivo de saída desejado quando a entrada terminar. A entrada termina quando uma chamada read(2) falha ou retorna 0 (que indica o fim do arquivo), ponto no qual sponge pode fazer a renomeação.