फ़ाइल में स्ट्रिंग को बदलने के लिए sed कमांड

Sed Command Replace String File



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

नोट: हम फ़ाइल में स्ट्रिंग को बदलने के लिए sed कमांड के उपयोग को प्रदर्शित करने के लिए लिनक्स मिंट 20 का उपयोग करेंगे। आप चाहें तो लिनक्स के किसी अन्य फ्लेवर का भी उपयोग कर सकते हैं।







सेड कमांड का उपयोग:

अब हम आपको लिनक्स में sed कमांड के उपयोग को दर्शाने के लिए कुछ बहुत ही रोचक उदाहरण दिखाने जा रहे हैं। आइए देखें कि यह कमांड विभिन्न परिदृश्यों में कैसे काम करता है।



प्रदर्शन के लिए एक टेक्स्ट फ़ाइल बनाना:

Sed कमांड के उपयोग को प्रदर्शित करने के लिए, हम एक टेक्स्ट फ़ाइल के साथ काम करना चाहेंगे। हालाँकि, आप बैश फ़ाइल या अपनी पसंद की कोई अन्य फ़ाइल भी बना सकते हैं। दूसरे, हम फाइल को होम डायरेक्टरी में बनाएंगे ताकि हमें इस फाइल को एक्सेस करते समय कोई जटिल पथ निर्दिष्ट न करना पड़े। टेक्स्ट फ़ाइल बनाने के लिए, निम्न चरणों का पालन किया जाना चाहिए:



अपने लिनक्स टकसाल 20 टास्कबार पर स्थित फ़ाइल प्रबंधक आइकन पर क्लिक करें:





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



इसे खोलने के लिए इस फ़ाइल पर डबल क्लिक करें और इसमें कोई भी रैंडम टेक्स्ट टाइप करें जैसा कि नीचे की छवि में दिखाया गया है। इस टेक्स्ट फाइल को Ctrl +S दबाकर सेव करें और फिर इसे बंद कर दें।

अब टर्मिनल को लिनक्स मिंट 20 में लॉन्च करें जैसा कि निम्न छवि में दिखाया गया है:

लिनक्स मिंट 20 में टर्मिनल लॉन्च करने के बाद, आप नीचे दिए गए सभी उदाहरणों को एक-एक करके देख सकते हैं।

किसी दिए गए शब्द की सभी घटनाओं को बदलने के लिए sed कमांड का उपयोग करना:

आप टेक्स्ट फ़ाइल में दिए गए शब्द की सभी घटनाओं को बदलने के लिए sed कमांड का उपयोग कर सकते हैं। इस लक्ष्य को प्राप्त करने का सिंटैक्स नीचे उल्लिखित है:

$एसईडी'एस/एसईडी/खोजशब्द/बदलेंशब्द/' file.txt

यहां, आपको FindWord को उस शब्द से बदलना होगा जिसे आप बदलना चाहते हैं और Word को बदले जाने वाले शब्द से बदलें। इसके अलावा, आपको फ़ाइल को उस फ़ाइल के नाम से भी बदलना होगा जहाँ आप ये प्रतिस्थापन करना चाहते हैं। इस परिदृश्य में, मैंने FindWord को sed और ReplaceWord को प्रतिस्थापित के साथ बदल दिया है। हमारी फ़ाइल का नाम sed.txt था। यह निम्न छवि में भी दिखाया गया है:

इस कमांड का सफल निष्पादन आपको उन परिवर्तनों को दिखाएगा जो इस कमांड को आपके टर्मिनल पर चलाने के कारण हुए हैं:

प्रत्येक पंक्ति में किसी दिए गए शब्द की nth घटना को बदलने के लिए sed कमांड का उपयोग करना:

उपरोक्त परिदृश्य सबसे सरल प्रतिस्थापन परिदृश्य था, हालांकि कभी-कभी, आप किसी शब्द की सभी घटनाओं को प्रतिस्थापित नहीं करना चाहते हैं, बल्कि आप सभी पंक्तियों में उस शब्द की केवल पहली, दूसरी या nवीं घटना को बदलना चाहते हैं। ऐसा करने के लिए, आप निम्न आदेश निष्पादित कर सकते हैं:

$एसईडी'एस/खोजशब्द/बदलेंशब्द/num' file.txt

यहां, आपको FindWord को उस शब्द से बदलना होगा जिसे आप बदलना चाहते हैं और Word को बदले जाने वाले शब्द से बदलें। इसके अलावा, आपको फ़ाइल को उस फ़ाइल के नाम से भी बदलना होगा जहाँ आप ये प्रतिस्थापन करना चाहते हैं। इस परिदृश्य में, मैंने FindWord को प्रतिस्थापित और ReplaceWord को sed से बदल दिया है। हमारी फ़ाइल का नाम sed.txt था। साथ ही, num, प्रतिस्थापित किए जाने वाले शब्द की घटना या स्थिति को संदर्भित करता है। प्रदर्शित उदाहरण में, मैं प्रत्येक पंक्ति में sed के साथ प्रतिस्थापन की पहली घटना को बदलना चाहता हूं जैसा कि नीचे दी गई छवि में दिखाया गया है:

इस कमांड का सफल निष्पादन आपको उन परिवर्तनों को दिखाएगा जो इस कमांड को आपके टर्मिनल पर चलाने के कारण हुए हैं:

किसी दिए गए शब्द को एक विशिष्ट पंक्ति में बदलने के लिए sed कमांड का उपयोग करना:

कभी-कभी, आप किसी दिए गए शब्द को केवल एक विशिष्ट पंक्ति में बदलना चाहते हैं, पूरे दस्तावेज़ में नहीं। ऐसा करने के लिए, आपको स्पष्ट रूप से उस विशेष पंक्ति संख्या को निम्न आदेश में निर्दिष्ट करने की आवश्यकता है:

$एसईडी'लाइननम s/खोजशब्द/बदलेंशब्द/' file.txt

यहां, आपको FindWord को उस शब्द से बदलना होगा जिसे आप बदलना चाहते हैं और Word को बदले जाने वाले शब्द से बदलें। इसके अलावा, आपको फ़ाइल को उस फ़ाइल के नाम से भी बदलना होगा जहाँ आप ये प्रतिस्थापन करना चाहते हैं। इस परिदृश्य में, मैंने FindWord sed और ReplaceWord को प्रतिस्थापित के साथ बदल दिया है। हमारी फ़ाइल का नाम sed.txt था। साथ ही, आपको LineNum को उस विशेष लाइन की लाइन नंबर से बदलना होगा जिसमें आप प्रतिस्थापन करना चाहते हैं। इस उदाहरण में, हम अपनी फ़ाइल की पंक्ति संख्या 2 में sed को प्रतिस्थापित करना चाहते हैं जैसा कि निम्न चित्र में दिखाया गया है:

इस कमांड का सफल निष्पादन आपको उन परिवर्तनों को दिखाएगा जो इस कमांड को आपके टर्मिनल पर चलाने के कारण हुए हैं। आप आसानी से सत्यापित कर सकते हैं कि उक्त परिवर्तन केवल हमारी फाइल के लाइन नंबर 2 पर हुए हैं और पूरे टेक्स्ट में नहीं।

निष्कर्ष:

जब भी आपको किसी फ़ाइल में किसी शब्द को बदलने की आवश्यकता महसूस होती है, तो सबसे पहले आपको अपनी विशेष आवश्यकता की पहचान करने की आवश्यकता होती है, यानी आप उस विशिष्ट शब्द को पूरी फ़ाइल में बदलना चाहते हैं, या आप किसी विशिष्ट घटना को बदलना चाहते हैं वह विशेष शब्द, या आप उस शब्द को एक विशिष्ट पंक्ति में बदलना चाहते हैं। एक बार जब आप अपने विशेष परिदृश्य की पहचान कर लेते हैं, तो आप इस लेख में चर्चा किए गए उदाहरणों से उस विशिष्ट पद्धति का उपयोग कर सकते हैं।