tôi thường có nhiệm vụ lập trình shell nơi tôi chạy vào mô hình này:Cách tốt nhất để sửa đổi tệp khi sử dụng đường ống?
cat file | some_script > file
này là không an toàn - mèo có thể không đọc toàn bộ tập tin trước khi some_script bắt đầu bằng văn bản cho nó. Tôi không thực sự muốn viết kết quả vào một tập tin tạm thời (chậm chạp của nó, và tôi không muốn biến chứng thêm về suy nghĩ về một tên mới duy nhất).
Có lẽ, có một lệnh shell tiêu chuẩn sẽ đệm toàn bộ luồng cho đến khi đạt được EOF? Một cái gì đó như:
cat file | bufferUntilEOF | script > file
Ý tưởng?
Um, xargs nên thực hiện thủ thuật, đúng không? –
Tôi không tin như vậy. Vâng, có thể nó, nhưng tài liệu của nó nói rằng vấn đề nó giải quyết là xử lý các trường hợp giới hạn đối số lệnh được thực hiện. Nó không nói rằng nó đệm tất cả các stdin trước khi mở stdout. – user48956
Tôi nghĩ rằng có các tùy chọn để xargs đối phó với kích thước bộ đệm. –