एक sort
सभी इनपुट को देखने के लिए इससे पहले कि यह उत्पादन के लिए शुरू कर सकते हैं की जरूरत है। इस कारण से, sort
प्रोग्राम आसानी से फ़ाइल को इन-प्लेस करने के लिए एक विकल्प प्रदान कर सकता है:
sort temp.txt -o temp.txt
विशेष रूप से, GNUsort
का प्रलेखन कहता है:
आम तौर पर, सॉर्ट आउटपुट-फ़ाइल खोलने से पहले सभी इनपुट को पढ़ता है, इसलिए आप सुरक्षित रूप से sort -o F F
और जैसे आदेशों का उपयोग करके किसी फ़ाइल को सुरक्षित रूप से सॉर्ट कर सकते हैं cat F | sort -o F
। हालांकि, sort
के साथ --merge
( -m
) तो एक आदेश की तरह, सभी इनपुट को पढ़ने से पहले आउटपुट फ़ाइल खोल सकते हैं cat F | sort -m -o F - G
सुरक्षित नहीं है के रूप में तरह लेखन शुरू हो सकता है F
इससे पहले कि cat
इसे पढ़ने के लिए किया जाता है।
जबकि बीएसडी का प्रलेखन sort
कहता है:
यदि [] आउटपुट-फाइल इनपुट फाइलों में से एक है, तो आउटपुट को []] आउटपुट-फाइल पर सॉर्ट करने और लिखने से पहले एक अस्थायी फाइल में कॉपी कर दें।
uniq
इनपुट को पूरा करने से पहले कमांड जैसे आउटपुट लिखना शुरू कर सकते हैं। ये कमांड आमतौर पर इन-प्लेस एडिटिंग का समर्थन नहीं करते हैं (और उनके लिए इस सुविधा का समर्थन करना कठिन होगा)।
आप आम तौर पर एक अस्थायी फ़ाइल के साथ इसके चारों ओर काम करते हैं, या यदि आप बिल्कुल एक मध्यवर्ती फ़ाइल होने से बचना चाहते हैं, तो आप इसे लिखने से पहले पूर्ण परिणाम को संग्रहीत करने के लिए एक बफर का उपयोग कर सकते हैं। उदाहरण के लिए, साथ perl
:
uniq temp.txt | perl -e 'undef $/; $_ = <>; open(OUT,">temp.txt"); print OUT;'
यहां, पर्ल भाग uniq
चर से पूरा आउटपुट पढ़ता है $_
और फिर इस डेटा के साथ मूल फ़ाइल को ओवरराइट करता है। आप अपनी पसंद की स्क्रिप्टिंग भाषा में भी ऐसा कर सकते हैं, शायद बैश में भी। लेकिन ध्यान दें कि संपूर्ण फ़ाइल को संग्रहीत करने के लिए पर्याप्त मेमोरी की आवश्यकता होगी, बड़ी फ़ाइलों के साथ काम करते समय यह उचित नहीं है।