A sortperlu melihat semua masukan sebelum dapat mulai menghasilkan. Karena alasan ini, sortprogram dapat dengan mudah menawarkan opsi untuk mengubah file di tempat:
sort temp.txt -o temp.txt
Secara khusus, dokumentasi GNUsort mengatakan:
Biasanya, sort membaca semua masukan sebelum membuka file keluaran, sehingga Anda dapat mengurutkan file dengan aman menggunakan perintah seperti sort -o F Fdan cat F | sort -o F. Namun, sortdengan --merge( -m) dapat membuka file output sebelum membaca semua input, jadi perintah seperti cat F | sort -m -o F - Gini tidak aman karena sort mungkin mulai menulis Fsebelum catselesai membacanya.
Sedangkan dokumentasi BSD sortmenyebutkan:
Jika file output adalah salah satu file input, sortir salinannya ke file sementara sebelum menyortir dan menulis output ke file output.
Perintah seperti uniq dapat mulai menulis keluaran sebelum selesai membaca masukan. Perintah ini biasanya tidak mendukung pengeditan di tempat (dan akan lebih sulit bagi mereka untuk mendukung fitur ini).
Anda biasanya mengatasinya dengan file sementara, atau jika Anda benar-benar ingin menghindari file perantara, Anda dapat menggunakan buffer untuk menyimpan hasil lengkap sebelum menulisnya. Misalnya dengan perl:
uniq temp.txt | perl -e 'undef $/; $_ = <>; open(OUT,">temp.txt"); print OUT;'
Di sini, bagian perl membaca keluaran lengkap dari uniqdalam variabel $_dan kemudian menimpa file asli dengan data ini. Anda dapat melakukan hal yang sama dalam bahasa skrip pilihan Anda, bahkan mungkin di Bash. Tetapi perhatikan bahwa itu akan membutuhkan cukup memori untuk menyimpan seluruh file, ini tidak disarankan saat bekerja dengan file besar.