कमांड लाइन से एकाधिक दस्तावेज़ों में टेक्स्ट ढूंढें और बदलें

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

कमांड लाइन में कई चीजों की तरह, कोई पुष्टिकरण प्रक्रिया नहीं है, इसलिए आप यह सुनिश्चित करना चाहते हैं कि कमांड शुरू करने से पहले आपका वाक्यविन्यास सही ढंग से सेट हो, अन्यथा आपको अपने टाइपो को सुधारने के लिए एक और खोज और प्रतिस्थापन करने की आवश्यकता हो सकती है।

निम्नानुसार मूल कमांड सिंटैक्स है:

perl -pi -w -e 's/THIS/THAT/g;' /path/to/files*.txt

एक शब्द उदाहरण के लिए, यदि आपको "दस्तावेज़" फ़ोल्डर में प्रत्येक .txt फ़ाइल में "कॉर्नब्रेड" के साथ "ogre" के सभी उदाहरणों को प्रतिस्थापित करने की आवश्यकता है, तो आप निम्न आदेश का उपयोग करेंगे:

perl -pi -w -e 's/ogre/cornbread/g;' ~/Documents/*.txt

पूरे वाक्यांश को खोजने और बदलने के उदाहरण के लिए, आइए मान लें कि हम दस्तावेज़ों में संग्रहीत "फिल्म्स" से शुरू होने वाली .txt फ़ाइलों के समूह में "द विज़ार्ड ऑफ ओज़" के साथ "द चॉकलेट फैक्टरी" की पूरी वाक्य को बदलने जा रहे हैं। निर्देशिका:

perl -pi -w -e 's/The Chocolate Factory/The Wizard of Oz/g;' ~/Documents/Films*.txt

खोज और प्रतिस्थापन तुरंत किया जाता है। आप जांचने के लिए बिल्ली और grep का उपयोग करके परिवर्तन को दोबारा जांच सकते हैं:

cat ~/Documents/Films124.txt |grep "Wizard of Oz"

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

उत्कृष्ट चाल के लिए लाइफहेकर तक एक बड़ा अंगूठे।

अद्यतन : 'sed' कमांड कमांड लाइन के माध्यम से त्वरित खोज करने और प्रतिस्थापित करने का एक और तरीका है। Seding sed ज्यादातर एक और लेख के लिए एक विषय है, लेकिन इस कार्य के लिए sed का उपयोग करने का मूल वाक्यविन्यास थोड़ा आसान है और इस प्रकार याद रखना आसान है:

sed -i 's/THIS/THAT/g' /path/to/files*.txt

कोई सही या गलत तरीका नहीं है, इसलिए यदि आप पर्ल या sed का उपयोग करते हैं तो व्यक्तिगत वरीयता का मामला बन जाता है।