CLI वन-लाइनर्स के साथ फाइलों में स्थल पर संपादन

PowerShell:
CLI वन-लाइनर्स के साथ फाइलों में स्थल पर संपादन

कैसे करें:

एकल फ़ाइल में पाठ को बदलना

आइए एक सरल कार्य के साथ शुरुआत करते हैं: आप चाहते हैं कि example.txt नामक फाइल में “oldtext” के सभी उदाहरणों को “newtext” से बदलें। यहां आप इसे कैसे करेंगे:

(Get-Content example.txt) -replace 'oldtext', 'newtext' | Set-Content example.txt

यह वन-लाइनर सामग्री को पढ़ता है, प्रतिस्थापन करता है, और सामग्री को मूल फ़ाइल में वापस लिखता है।

कई फ़ाइलों को संपादित करना

अगर आपको कई फ़ाइलों में समान परिवर्तन लागू करने की आवश्यकता है तो क्या करें? यहाँ एक लूप का उपयोग करने की विधि है:

Get-ChildItem *.txt | ForEach-Object {
  (Get-Content $_) -replace 'oldtext', 'newtext' | Set-Content $_
}

यह स्निपेट वर्तमान निर्देशिका में सभी .txt फ़ाइलों को खोजता है, प्रत्येक में “oldtext” को “newtext” से बदलता है।

फ़ाइलों की शुरुआत या अंत में सामग्री जोड़ना

सामग्री को जोड़ना या पहले जोड़ना भी सरलीकृत किया जा सकता है:

# पहले जोड़ना
"New first line`n" + (Get-Content example.txt) | Set-Content example.txt

# जोड़ना
(Get-Content example.txt) + "`nNew last line" | Set-Content example.txt

यहां, हम सरलता से नई सामग्री को मौजूदा सामग्री से पहले या बाद में जोड़ते हैं और इसे वापस सहेजते हैं।

गहन विश्लेषण

इतिहासिक रूप से, स्थल पर संपादन अधिक सामान्यतः Unix उपकरणों जैसे कि sed और awk के साथ जोड़ा गया है। PowerShell, एक अपेक्षाकृत हालिया प्रवेशक, बॉक्स से बाहर एक समर्पित स्थान-पर संपादन सुविधा को शामिल नहीं करता है। इसका कुछ हद तक कारण इसकी डिज़ाइन दर्शन है, जो टेक्स्ट स्ट्रीम्स के ऊपर ऑब्जेक्ट्स के महत्व को उजागर करता है, Unix उपकरणों के विपरीत जो अधिकांश इनपुट्स को टेक्स्ट के रूप में मानते हैं।

इस कार्य के लिए PowerShell के विकल्प में Cygwin या Windows Subsystem for Linux (WSL) के माध्यम से Windows पर उपलब्ध पारंपरिक Unix उपकरणों का उपयोग शामिल है। इन उपकरणों में अक्सर टेक्स्ट-केंद्रीत डिजाइन के कारण स्थल-पर संपादन के लिए एक अधिक संक्षिप्त सिंटैक्स प्रदान होता है।

कार्यान्वयन के दृष्टिकोण से, यह ध्यान देना महत्वपूर्ण है कि PowerShell का दृष्टिकोण पूरी फ़ाइल को मेमोरी में पढ़ना, परिवर्तन करना और फिर इसे वापस लिखना शामिल करता है। जबकि यह मध्यम आकार की फ़ाइलों के लिए अच्छी तरह से काम करता है, यह बहुत बड़ी फ़ाइलों के लिए अकुशल हो सकता है। ऐसे मामलों में, डायरेक्ट .NET विधियों का उपयोग करने या बड़े डेटा की मात्रा को स्ट्रीम करने के लिए डिज़ाइन किए गए वैकल्पिक उपकरणों पर विचार करना अच्छा हो सकता है।

इन विचारों के बावजूद, PowerShell की लचीलापन और व्यापक सुविधा सेट इसे कमांड लाइन से सीधे फ़ाइलों को संभालने के लिए एक अमूल्य उपकरण बनाता है, विशेष रूप से उनके लिए जो पहले से ही Windows इकोसिस्टम में गहराई से जड़े हुए हैं या क्रॉस-प्लेटफ़ॉर्म वातावरणों का प्रबंधन करते हैं।