चेतावनी: यह एक खतरनाक तरीका है! यह linux में i / o बफ़र्स को गाली देता है और बफ़र करने के विशिष्ट विकल्पों के साथ यह छोटी फ़ाइलों पर काम करने का प्रबंधन करता है। यह एक दिलचस्प जिज्ञासा है। लेकिन एक वास्तविक स्थिति के लिए इसका इस्तेमाल न करें!
आप के -iविकल्प के अलावा उपयोगिता काsed उपयोग कर सकते हैं ।tee
से man:
टी - मानक इनपुट से पढ़ें और मानक आउटपुट और फ़ाइलों को लिखें
तो, समाधान होगा:
sed s/STRING_TO_REPLACE/STRING_TO_REPLACE_IT/g index.html | tee | tee index.html
- यहां teeयह सुनिश्चित करने के लिए दोहराया गया है कि पाइपलाइन बफ़र की गई है। तब पाइपलाइन में सभी कमांड अवरुद्ध हो जाते हैं जब तक कि उन्हें काम करने के लिए कुछ इनपुट नहीं मिलता है। पाइपलाइन में प्रत्येक कमांड तब शुरू होती है जब अपस्ट्रीम कमांड्स ने कमांड के इनपुट को बाइट्स का 1 बफर (आकार कहीं परिभाषित किया गया है ) लिखा है । तो अंतिम कमांड tee index.html, जो लिखने के लिए फ़ाइल को खोलता है और इसलिए इसे खाली करता है, अपस्ट्रीम पाइपलाइन के समाप्त होने के बाद चलता है और आउटपुट पाइप लाइन के भीतर बफर में है।
सबसे अधिक संभावना है कि निम्नलिखित काम नहीं करेगा:
sed s/STRING_TO_REPLACE/STRING_TO_REPLACE_IT/g index.html | tee index.html
- यह बिना किसी अवरोध के एक ही समय में पाइपलाइन के दोनों कमांड चलाएगा। (पाइप लाइन अवरुद्ध बिना बफर द्वारा बफर के बजाय लाइन द्वारा बाइट्स लाइन पास करना चाहिए। जब आप चलाने के रूप में एक ही cat | sed s/bar/GGG/अवरुद्ध इसे और अधिक इंटरैक्टिव है और आम तौर पर सिर्फ 2 आदेशों की पाइपलाइनों बफरिंग और अवरुद्ध के बिना चलने के बिना।। अब पाइपलाइनों बफ़र कर रहे हैं।) tee index.htmlइच्छा लिखने के लिए फ़ाइल खोलें और इसे खाली कर दिया जाएगा। हालाँकि, यदि आप हमेशा बफ़रिंग चालू करते हैं, तो दूसरा संस्करण भी काम करेगा।
perl -pi -w -e 's/STRING_TO_REPLACE/REPLACE_WITH/g;' index.html