Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Bash प्रोग्रामिंग

Bash स्ट्रिंग मैनिपुलेशन में मास्टर करें: लंबाई, सबस्ट्रिंग, खोज और प्रतिस्थापन तकनीकें

Bash शेल में, जब आप एक डॉलर साइन के बाद एक वेरिएबल नाम का उपयोग करते हैं, तो शेल वेरिएबल को उसके मान के साथ विस्तारित करता है। शेल की इस सुविधा को पैरामीटर विस्तार कहा जाता है।

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

यह लेख चल रहे bash ट्यूटोरियल सीरीज़ का हिस्सा है। bash { } विस्तार पर हमारे पहले के लेख देखें।

1. Bash शेल स्क्रिप्ट के अंदर स्ट्रिंग लंबाई पहचानें

${#string}

उपरोक्त प्रारूप का उपयोग दिए गए bash वेरिएबल की लंबाई प्राप्त करने के लिए किया जाता है।

$ cat len.sh #! /bin/bash var="Welcome to the geekstuff" echo ${#var} $ ./len.sh 24 

Bash वेरिएबल्स के बारे में अधिक समझने के लिए, 6 व्यावहारिक Bash ग्लोबल और लोकल वेरिएबल उदाहरण पढ़ें।

2. Bash शेल स्क्रिप्ट के अंदर एक वेरिएबल से सबस्ट्रिंग निकालें

Bash एक स्ट्रिंग से सबस्ट्रिंग निकालने का एक तरीका प्रदान करता है। निम्नलिखित उदाहरण बताता है कि किसी विशेष स्थिति से शुरू होकर n वर्णों को कैसे पार्स किया जाए।

${string:position}

$string पर $position से सबस्ट्रिंग निकालें

${string:position:length}

$string से $position से शुरू होकर $length वर्णों का सबस्ट्रिंग निकालें। नीचे दिए गए उदाहरण में, पहला echo स्टेटमेंट 15वीं स्थिति से शुरू होने वाला सबस्ट्रिंग लौटाता है। दूसरा echo स्टेटमेंट 15वीं स्थिति से शुरू होने वाले 4 वर्ण लौटाता है। लंबाई शून्य से बड़ी या बराबर संख्या होनी चाहिए।

$ cat substr.sh #! /bin/bash var="Welcome to the geekstuff" echo ${var:15} echo ${var:15:4} $ ./substr.sh geekstuff geek 

इसके अलावा, $*, $@, $#, $$, $!, $?, $-, $_ bash विशेष पैरामीटर्स को समझने के लिए हमारे पहले के लेख देखें।

3. सबसे छोटा सबस्ट्रिंग मैच

निम्नलिखित सिंटैक्स $string के सामने से $substring के सबसे छोटे मैच को हटाता है

${string#substring}

निम्नलिखित सिंटैक्स $string के पीछे से $substring के सबसे छोटे मैच को हटाता है

${string%substring}

निम्नलिखित नमूना शेल स्क्रिप्ट उपरोक्त दो सबसे छोटे सबस्ट्रिंग मैच अवधारणाओं को समझाती है।

$ cat shortest.sh #! /bin/bash filename="bash.string.txt" echo ${filename#*.} echo ${filename%.*} $ ./shortest.sh सामने से सबसे छोटे मैच को हटाने के बाद: string.txt पीछे से सबसे छोटे मैच को हटाने के बाद: bash.string 

पहले echo स्टेटमेंट में सबस्ट्रिंग '*.' वर्णों और एक डॉट से मेल खाता है, और # स्ट्रिंग के सामने से हटाता है, इसलिए यह वेरिएबल filename से सबस्ट्रिंग "bash." को हटा देता है। दूसरे echo स्टेटमेंट में सबस्ट्रिंग '.*' डॉट से शुरू होने वाले सबस्ट्रिंग से मेल खाता है, और % स्ट्रिंग के पीछे से हटाता है, इसलिए यह सबस्ट्रिंग '.txt' को हटा देता है।

4. सबसे लंबा सबस्ट्रिंग मैच

निम्नलिखित सिंटैक्स $string के सामने से $substring के सबसे लंबे मैच को हटाता है

${string##substring}

निम्नलिखित सिंटैक्स $string के पीछे से $substring के सबसे लंबे मैच को हटाता है

${string%%substring}

निम्नलिखित नमूना शेल स्क्रिप्ट उपरोक्त दो सबसे लंबे सबस्ट्रिंग मैच अवधारणाओं को समझाती है।

$ cat longest.sh #! /bin/bash filename="bash.string.txt" echo "सामने से सबसे लंबे मैच को हटाने के बाद:" ${filename##*.} echo "पीछे से सबसे लंबे मैच को हटाने के बाद:" ${filename%%.*} $ ./longest.sh सामने से सबसे लंबे मैच को हटाने के बाद: txt पीछे से सबसे लंबे मैच को हटाने के बाद: bash 

उपरोक्त उदाहरण में, ##*. '*.' के लिए सबसे लंबा मैच हटाता है जो "bash.string." से मेल खाता है, इसलिए इसे हटाने के बाद, यह शेष txt प्रिंट करता है। और %%.* पीछे से .* के लिए सबसे लंबा मैच हटाता है जो ".string.txt" से मेल खाता है, इसे हटाने के बाद यह "bash" लौटाता है।

5. Bash शेल स्क्रिप्ट के अंदर स्ट्रिंग मान खोजें और प्रतिस्थापित करें

केवल पहला मैच प्रतिस्थापित करें

${string/pattern/replacement}

यह वेरिएबल $string में पैटर्न से मेल खाता है, और पैटर्न के केवल पहले मैच को प्रतिस्थापन से बदल देता है।

$ cat firstmatch.sh #! /bin/bash filename="bash.string.txt" echo "प्रतिस्थापन के बाद:" ${filename/str*./operations.} $ ./firstmatch.sh प्रतिस्थापन के बाद: bash.operations.txt 

सभी मैचों को प्रतिस्थापित करें

${string//pattern/replacement}

यह पैटर्न के सभी मैचों को प्रतिस्थापन से बदल देता है।

$ cat allmatch.sh #! /bin/bash filename="Path of the bash is /bin/bash" echo "प्रतिस्थापन के बाद:" ${filename//bash/sh} $ ./allmatch.sh प्रतिस्थापन के बाद: Path of the sh is /bin/sh 

खोज और प्रतिस्थापन के बारे में बात करते हुए, हमारे पहले के लेख देखें - sed सब्स्टीट्यूट उदाहरण और Vim खोज और प्रतिस्थापन।

शुरुआत और अंत को प्रतिस्थापित करें

${string/#pattern/replacement}

निम्नलिखित सिंटैक्स प्रतिस्थापन स्ट्रिंग से प्रतिस्थापित करता है, केवल जब पैटर्न $string की शुरुआत से मेल खाता है।

${string/%pattern/replacement}

निम्नलिखित सिंटैक्स प्रतिस्थापन स्ट्रिंग से प्रतिस्थापित करता है, केवल जब पैटर्न दिए गए $string के अंत से मेल खाता है।

$ cat posmatch.sh #! /bin/bash filename="/root/admin/monitoring/process.sh" echo "शुरुआत में प्रतिस्थापित:" ${filename/#\/root/\/tmp} echo "अंत में प्रतिस्थापित": ${filename/%.*/.ksh} $ ./posmatch.sh शुरुआत में प्रतिस्थापित: /tmp/admin/monitoring/process.sh अंत में प्रतिस्थापित: /root/admin/monitoring/process.ksh 

अनुशंसित पठन

Bash 101 Hacks, रमेश नटराजन द्वारा. मैं अपना अधिकांश समय Linux वातावरण में बिताता हूं। इसलिए, स्वाभाविक रूप से मैं Bash कमांड लाइन और शेल स्क्रिप्टिंग का बहुत बड़ा प्रशंसक हूं। 15 साल पहले, जब मैं *nix के विभिन्न फ्लेवर्स पर काम कर रहा था, मैं C शेल और Korn शेल पर बहुत सारा कोड लिखता था। बाद के वर्षों में, जब मैंने Linux पर सिस्टम एडमिनिस्ट्रेटर के रूप में काम करना शुरू किया, तो मैंने Bash शेल स्क्रिप्टिंग का उपयोग करके हर संभव कार्य को स्वचालित कर दिया। अपने Bash अनुभव के आधार पर, मैंने Bash 101 Hacks ईबुक लिखी है जिसमें Bash कमांड लाइन और शेल स्क्रिप्टिंग दोनों पर 101 व्यावहारिक उदाहरण हैं। यदि आप Bash में मास्टर बनने के बारे में सोच रहे हैं, तो अपना उपकार करें और इस पुस्तक को पढ़ें, जो आपके Bash कमांड लाइन और शेल स्क्रिप्टिंग पर नियंत्रण पाने में मदद करेगी।

  1. पब्लिशर में फाइंड एंड रिप्लेस का उपयोग कैसे करें पब्लिशर में फाइंड एंड रिप्लेस का उपयोग कैसे करें

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

  1. नोटपैड++ में स्ट्रिंग/कैरेक्टर/सिंबल को नई लाइन से ढूंढें और बदलें नोटपैड++ में स्ट्रिंग/कैरेक्टर/सिंबल को नई लाइन से ढूंढें और बदलें

    नोटपैड++ एक सोर्स कोड और टेक्स्ट एडिटर है जिसका उपयोग ज्यादातर प्रोग्रामर अपने कोड को आसान वातावरण में संपादित करने के लिए करते हैं। यह डिफ़ॉल्ट नोटपैड का उन्नत संस्करण है और यह कई भाषाओं का समर्थन करता है। कई विशेषताएं और उपकरण हैं जिनका उपयोग उपयोगकर्ता अपने सोर्स कोड या टेक्स्ट को संपादित करने के

  1. Bash वेरिएबल्स में मास्टर करें: ग्लोबल और लोकल उपयोग के 6 व्यावहारिक उदाहरण Bash वेरिएबल्स में मास्टर करें: ग्लोबल और लोकल उपयोग के 6 व्यावहारिक उदाहरण

    यह लेख हमारी चल रही bash ट्यूटोरियल सीरीज़ का हिस्सा है। किसी भी अन्य प्रोग्रामिंग भाषा की तरह, Bash भी वेरिएबल्स प्रदान करता है। Bash वेरिएबल्स प्रोग्राम के जीवनकाल के दौरान आवश्यक जानकारी के लिए अस्थायी भंडारण प्रदान करते हैं। सिंटैक्स: VARNAME=VALUE नोट: वेरिएबल असाइनमेंट में = चिन्ह के आसपास कोई