A sortcần xem tất cả đầu vào trước khi nó có thể bắt đầu xuất. Vì lý do này, sortchương trình có thể dễ dàng cung cấp một tùy chọn để sửa đổi tệp tại chỗ:
sort temp.txt -o temp.txt
Cụ thể, tài liệu của GNUsort cho biết:
Thông thường, sắp xếp đọc tất cả đầu vào trước khi mở tệp đầu ra, vì vậy bạn có thể sắp xếp tệp tại chỗ một cách an toàn bằng cách sử dụng các lệnh như sort -o F Fvà cat F | sort -o F. Tuy nhiên, sortwith --merge( -m) có thể mở tệp đầu ra trước khi đọc tất cả đầu vào, vì vậy một lệnh như cat F | sort -m -o F - Gkhông an toàn vì sắp xếp có thể bắt đầu viết Ftrước khi catđọc xong.
Trong khi tài liệu của BSD sortcho biết:
Nếu [the] output-file là một trong những tập tin đầu vào, hãy sắp xếp sao chép nó vào một tập tin tạm thời trước khi sắp xếp và ghi kết quả vào [the] output-file.
Các lệnh như uniqcó thể bắt đầu ghi đầu ra trước khi đọc xong đầu vào. Các lệnh này thường không hỗ trợ chỉnh sửa tại chỗ (và chúng sẽ khó hỗ trợ tính năng này hơn).
Bạn thường giải quyết vấn đề này với một tệp tạm thời hoặc nếu bạn hoàn toàn muốn tránh có tệp trung gian, bạn có thể sử dụng bộ đệm để lưu trữ kết quả hoàn chỉnh trước khi viết ra. Ví dụ, với perl:
uniq temp.txt | perl -e 'undef $/; $_ = <>; open(OUT,">temp.txt"); print OUT;'
Ở đây, phần perl đọc kết quả hoàn chỉnh từ uniqtrong biến$_ và sau đó ghi đè lên tệp gốc bằng dữ liệu này. Bạn có thể làm điều tương tự bằng ngôn ngữ kịch bản mà bạn chọn, thậm chí có thể trong Bash. Nhưng lưu ý rằng nó sẽ cần đủ bộ nhớ để lưu toàn bộ tệp, điều này không được khuyến khích khi làm việc với các tệp lớn.