Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> बाश प्रोग्रामिंग

बैश स्ट्रिंग मैनिपुलेशन उदाहरण - लंबाई, सबस्ट्रिंग, ढूँढें और बदलें

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

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

यह लेख चल रहे बैश ट्यूटोरियल श्रृंखला का हिस्सा है। बैश { } विस्तार पर हमारा पिछला लेख देखें।

<एच3>1. बैश शैल स्क्रिप्ट के अंदर स्ट्रिंग की लंबाई की पहचान करें
${#string}

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

$ cat len.sh
#! /bin/bash

var="Welcome to the geekstuff"

echo ${#var}

$ ./len.sh
24

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

<एच3>2. बैश शैल स्क्रिप्ट के अंदर एक चर से एक सबस्ट्रिंग निकालें

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

${string:position}

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

<केंद्र>
${string:position:length}

$ स्थिति से शुरू होने वाले $ string से सबस्ट्रिंग वर्णों की $ लंबाई निकालें। नीचे दिए गए उदाहरण में, पहला इको स्टेटमेंट 15 वें स्थान से शुरू होने वाले सबस्ट्रिंग को लौटाता है। दूसरा इको स्टेटमेंट 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>3. सबसे छोटा सबस्ट्रिंग मैच

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

${string#substring}

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

${string%substring}

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

$ cat shortest.sh
#! /bin/bash

filename="bash.string.txt"

echo ${filename#*.}
echo ${filename%.*}

$ ./shortest.sh
After deletion of shortest match from front: string.txt
After deletion of shortest match from back: bash.string

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

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

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

${string##substring}

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

${string%%substring}

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

$ cat longest.sh
#! /bin/bash

filename="bash.string.txt"

echo "After deletion of longest match from front:" ${filename##*.}
echo "After deletion of longest match from back:" ${filename%%.*}

$ ./longest.sh
After deletion of longest match from front: txt
After deletion of longest match from back: bash

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

5. बैश शैल स्क्रिप्ट के अंदर स्ट्रिंग मान ढूंढें और बदलें

केवल पहला मैच बदलें

${string/pattern/replacement}

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

$ cat firstmatch.sh
#! /bin/bash

filename="bash.string.txt"

echo "After Replacement:" ${filename/str*./operations.}

$ ./firstmatch.sh
After Replacement: bash.operations.txt

सभी मैच बदलें

${string//pattern/replacement}

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

$ cat allmatch.sh
#! /bin/bash

filename="Path of the bash is /bin/bash"

echo "After Replacement:" ${filename//bash/sh}

$ ./allmatch.sh
After Replacement: Path of the sh is /bin/sh

खोजने और बदलने के बारे में, हमारे पहले के लेख देखें - sed स्थानापन्न उदाहरण और विम ढूंढें और बदलें।

आरंभ और अंत बदलें

${string/#pattern/replacement}

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

${string/%pattern/replacement}

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

$ cat posmatch.sh
#! /bin/bash

filename="/root/admin/monitoring/process.sh"

echo "Replaced at the beginning:" ${filename/#\/root/\/tmp}
echo "Replaced at the end": ${filename/%.*/.ksh}

$ ./posmatch.sh
Replaced at the beginning: /tmp/admin/monitoring/process.sh
Replaced at the end: /root/admin/monitoring/process.ksh

अनुशंसित पठन

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


  1. प्रकाशक में ढूँढें और बदलें का उपयोग कैसे करें

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

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

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

  1. बैश वैरिएबल ट्यूटोरियल - 6 प्रैक्टिकल बैश ग्लोबल और लोकल वेरिएबल उदाहरण

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