sortต้องการที่จะเห็นการป้อนข้อมูลทั้งหมดก่อนที่จะสามารถเริ่มต้นการส่งออก ด้วยเหตุนี้sortโปรแกรมจึงสามารถเสนอตัวเลือกในการแก้ไขไฟล์แทน:
sort temp.txt -o temp.txt
โดยเฉพาะเอกสารของ GNUsortกล่าวว่า:
โดยปกติการจัดเรียงอ่านทุกท่านก่อนที่จะเปิดเอาท์พุทไฟล์เพื่อให้คุณสามารถจัดเรียงไฟล์ได้อย่างปลอดภัยในสถานที่โดยใช้คำสั่งเหมือนและsort -o F F cat F | sort -o Fอย่างไรก็ตามsortด้วย--merge( -m) สามารถเปิดไฟล์เอาต์พุตก่อนที่จะอ่านอินพุตทั้งหมดดังนั้นคำสั่ง like cat F | sort -m -o F - Gจึงไม่ปลอดภัยเนื่องจาก sort อาจเริ่มเขียนFก่อนที่catจะอ่านเสร็จ
ในขณะที่เอกสารของ BSD sortกล่าวว่า:
ถ้า [the] output-file เป็นหนึ่งในอินพุตไฟล์ให้เรียงสำเนาไปยังไฟล์ชั่วคราวก่อนที่จะเรียงลำดับและเขียนเอาต์พุตไปยังไฟล์เอาต์พุต [the]
คำสั่งต่างๆเช่นuniqสามารถเริ่มเขียนเอาต์พุตก่อนที่จะอ่านอินพุตเสร็จสิ้น โดยทั่วไปคำสั่งเหล่านี้ไม่รองรับการแก้ไขแบบแทนที่ (และจะยากกว่าสำหรับคำสั่งเหล่านี้ที่จะรองรับฟีเจอร์นี้)
โดยทั่วไปคุณจะแก้ไขปัญหานี้ด้วยไฟล์ชั่วคราวหรือหากคุณต้องการหลีกเลี่ยงการมีไฟล์กลางอย่างแท้จริงคุณสามารถใช้บัฟเฟอร์เพื่อจัดเก็บผลลัพธ์ทั้งหมดก่อนที่จะเขียนออกมา ตัวอย่างเช่นด้วยperl:
uniq temp.txt | perl -e 'undef $/; $_ = <>; open(OUT,">temp.txt"); print OUT;'
ที่นี่ส่วน perl จะอ่านผลลัพธ์ที่สมบูรณ์จากuniqในตัวแปร$_จากนั้นเขียนทับไฟล์ต้นฉบับด้วยข้อมูลนี้ คุณสามารถทำเช่นเดียวกันนี้ในภาษาสคริปต์ที่คุณเลือกหรือแม้กระทั่งใน Bash แต่โปรดทราบว่าจะต้องใช้หน่วยความจำเพียงพอที่จะจัดเก็บไฟล์ทั้งหมดจึงไม่แนะนำให้ใช้เมื่อทำงานกับไฟล์ขนาดใหญ่