मैच के बाद `Sed` का उपयोग करके एक लाइन कैसे डालें?

How Insert Line After Match Using Sed



Linux के उपयोगी और शक्तिशाली कमांडों में से एक sed कमांड है। इस कमांड का उपयोग लिनक्स में विभिन्न प्रकार के कार्यों को करने के लिए किया जाता है, जैसे मैच के आधार पर किसी विशेष टेक्स्ट या लाइन को सम्मिलित करना, अपडेट करना और हटाना। आप sed कमांड का उपयोग करके अलग-अलग तरीकों से एक स्ट्रिंग या फ़ाइल में टेक्स्ट सम्मिलित कर सकते हैं।

एक स्ट्रिंग या एक लाइन में मैच खोजने के बाद एक लाइन कैसे डालें इस ट्यूटोरियल में दिखाया गया है।







स्ट्रिंग में एक लाइन डालें

sed कमांड का उपयोग करके किसी भी स्ट्रिंग मान के बाद एक नई लाइन डाली जा सकती है यदि कमांड में परिभाषित पैटर्न स्ट्रिंग मान के किसी भी भाग से मेल खाता है।



निम्न उदाहरण दिखाता है कि स्ट्रिंग मान के बाद एक नई पंक्ति कैसे जोड़ी जा सकती है यदि कोई विशेष स्ट्रिंग स्ट्रिंग मान में कहीं भी मौजूद है।



उदाहरण -1: एक मैच खोजने के बाद एक स्ट्रिंग में एक लाइन डालें

निम्न कमांड स्ट्रिंग में आईएनजी खोजेगा, मुझे प्रोग्रामिंग पसंद है, और टेक्स्ट की एक पंक्ति, क्या आपको प्रोग्रामिंग पसंद है? यदि खोज स्ट्रिंग मौजूद है तो स्ट्रिंग के बाद डाला जाएगा।





यहां, स्ट्रिंग के बाद लाइन डालने के लिए & कैरेक्टर का उपयोग किया जाता है।

$फेंक दिया 'मुझे प्रोग्रामिंग पसंद है।' | एसईडी / आईएनजी / और क्या आपको प्रोग्रामिंग पसंद है? / '

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




निम्न आदेश आईएनजी खोज करेगा। स्ट्रिंग में, मुझे प्रोग्रामिंग पसंद है और यह स्ट्रिंग में मौजूद है।

$फेंक दिया 'मुझे प्रोग्रामिंग पसंद है।' | एसईडी 's/ing./& क्या आपको प्रोग्रामिंग पसंद है?/'

निम्न आउटपुट दिखाता है कि स्ट्रिंग के बाद नई लाइन जोड़ी जाती है।

फ़ाइल में एक लाइन डालें

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

A. sed कमांड में a का उपयोग करना

a का उपयोग sed के खोज पैटर्न में एक फ़ाइल में एक या एक से अधिक पंक्तियों को जोड़ने के लिए किया जा सकता है जहाँ खोज पैटर्न मेल खाता है या किसी विशेष पंक्ति संख्या के बाद।

B. sed कमांड में i का उपयोग करना

i का उपयोग sed कमांड के खोज पैटर्न में एक फ़ाइल में एक या अधिक पंक्तियों को उस पंक्ति से पहले सम्मिलित करने के लिए किया जा सकता है जहाँ खोज पैटर्न मेल खाता है।

पैटर्न के आधार पर किसी फ़ाइल में पंक्तियाँ सम्मिलित करें:

नाम की एक टैब-सीमांकित टेक्स्ट फ़ाइल बनाएँ उत्पाद.txt निम्न सामग्री के साथ sed कमांड में उपरोक्त ध्वज के उपयोग को दिखाने के लिए।

उत्पाद.txt

आईडी का नाम

01 व्हिप क्रीम

02 कोको पाउडर

03 चीनी

04 अंडा

05 आटा

उदाहरण -2: a . का प्रयोग करते हुए किसी विशेष पंक्ति संख्या के बाद एक रेखा डालें

निम्न कमांड दिखाता है कि कैसे एक नई लाइन को जोड़ा जा सकता है, एक विशेष लाइन नंबर के बाद products.txt फ़ाइल, sed कमांड में उपयोग किए गए पैटर्न के आधार पर।

यहां, पहला कमांड फ़ाइल की मौजूदा सामग्री को दिखाएगा। फ़ाइल की पहली दो पंक्तियों के बाद, sed कमांड टेक्स्ट, b01 बेकिंग पाउडर को जोड़ देगा। अंतिम कमांड का उपयोग यह जांचने के लिए किया जाता है कि फ़ाइल की सामग्री बदली गई है या नहीं।

$बिल्लीउत्पाद.txt

$एसईडी '2 a b01 बेकिंग पाउडर'उत्पाद.txt

$बिल्लीउत्पाद.txt

उपरोक्त आदेश चलाने के बाद निम्न आउटपुट दिखाई देगा।

उदाहरण -3: अंतिम पंक्ति के बाद a . का उपयोग करके एक पंक्ति डालें

निम्न कमांड फ़ाइल की अंतिम पंक्ति के बाद एक नई लाइन जोड़ने का तरीका दिखाता है। पहला और अंतिम कमांड sed कमांड को निष्पादित करने से पहले और बाद में फ़ाइल की मौजूदा सामग्री को दिखाता है। फ़ाइल की अंतिम पंक्ति का उल्लेख करने के लिए sed कमांड के पैटर्न में $ प्रतीक का उपयोग किया जाता है।

$बिल्लीउत्पाद.txt

$एसईडी '$ a b01 बेकिंग पाउडर'उत्पाद.txt

$बिल्लीउत्पाद.txt

उपरोक्त आदेश चलाने के बाद निम्न आउटपुट दिखाई देगा।

उदाहरण -4: a . का उपयोग करके किसी पैटर्न से मिलान करने के बाद फ़ाइल में कहीं भी एक पंक्ति डालें

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

$बिल्लीउत्पाद.txt

$एसईडी '/^s01.*/a b01 बेकिंग पाउडर'उत्पाद.txt

$बिल्लीउत्पाद.txt

कमांड चलाने के बाद निम्न आउटपुट दिखाई देगा।


निम्न sed कमांड पाउडर के साथ समाप्त होने वाली किसी भी लाइन को खोजेगी और उसके बाद नई लाइन डालेगी। फ़ाइल की तीसरी पंक्ति पाउडर के साथ समाप्त होती है। तो, उस लाइन के बाद नई लाइन डाली जाएगी।

$बिल्लीउत्पाद.txt

$एसईडी '/पाउडर$/a b01 बेकिंग पाउडर'उत्पाद.txt

$बिल्लीउत्पाद.txt

उपरोक्त आदेशों को चलाने के बाद निम्न आउटपुट दिखाई देगा।

उदाहरण -5: मिलान पैटर्न के बाद a . का उपयोग करके कई लाइनें डालें

निम्न sed कमांड मिलान पैटर्न के आधार पर फ़ाइल की सामग्री के अंदर कई पंक्तियों को जोड़ने का तरीका दिखाता है।

यहां तीसरी लाइन के बाद पैटर्न के अनुसार दो लाइन जोड़ी जाएंगी।

$बिल्लीउत्पाद.txt

$एसईडी '/^[a-c]/a b01 बेकिंग पाउडर b02 बेकिंग सोडा'उत्पाद.txt

$बिल्लीउत्पाद.txt

उपरोक्त आदेशों को चलाने के बाद निम्न आउटपुट दिखाई देगा।

उदाहरण -6: I . का उपयोग करके एक पैटर्न से मेल खाने के बाद एक लाइन डालें

$बिल्लीउत्पाद.txt

$एसईडी '/क्रीम/i b01 बेकिंग पाउडर'उत्पाद.txt

$बिल्लीउत्पाद.txt

उपरोक्त आदेशों को चलाने के बाद निम्न आउटपुट दिखाई देगा।

उदाहरण -7: -i विकल्प का उपयोग करके मिलान पैटर्न के बाद स्थायी रूप से एक लाइन डालें

निम्न sed कमांड दिखाता है कि फ़ाइल की सामग्री को स्थायी रूप से कैसे बदला जाए। पैटर्न के आधार पर फ़ाइल में एक नई लाइन डालने के लिए i विकल्प का उपयोग sed कमांड के साथ किया जाता है।

$बिल्लीउत्पाद.txt

$एसईडी -मैं '/e$/a g01 Ghee'उत्पाद.txt

$बिल्लीउत्पाद.txt

उपरोक्त आदेशों को चलाने के बाद निम्न आउटपुट दिखाई देगा।

निष्कर्ष:

पैटर्न के साथ sed कमांड का उपयोग करके फ़ाइल में दो या दो से अधिक पंक्तियों को सम्मिलित करने के तरीके इस ट्यूटोरियल में दिखाए गए हैं ताकि पाठक पैटर्न के आधार पर अस्थायी या स्थायी रूप से लाइनों को सम्मिलित करने के लिए इस कमांड को लागू कर सकें।