बैश स्क्रिप्ट में सबस्ट्रिंग्स की जाँच करना

बैश स्क्रिप्ट में सबस्ट्रिंग्स की जाँच करना
Bash

बैश में स्ट्रिंग कन्टेनमेंट का परिचय

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

इस आलेख में, हम बैश में इसे प्राप्त करने के लिए विभिन्न तरीकों का पता लगाएंगे, जिसमें सशर्त कथन और 'इको' और 'ग्रेप' जैसे कमांड का उपयोग करना शामिल है। हम आपकी स्क्रिप्ट को अधिक रखरखाव योग्य और त्रुटियों की संभावना कम बनाने के लिए सबसे कुशल और पठनीय तरीकों पर भी चर्चा करेंगे।

आज्ञा विवरण
[[ ]] बैश में स्ट्रिंग्स और अन्य स्थितियों का परीक्षण करने के लिए उपयोग की जाने वाली एक सशर्त अभिव्यक्ति।
* एक वाइल्डकार्ड वर्ण जिसका उपयोग स्ट्रिंग पैटर्न मिलान में किसी भी संख्या में वर्णों का प्रतिनिधित्व करने के लिए किया जाता है।
echo एक कमांड का उपयोग तर्क के रूप में पारित पाठ या स्ट्रिंग की एक पंक्ति को प्रदर्शित करने के लिए किया जाता है।
grep नियमित अभिव्यक्ति से मेल खाने वाली पंक्तियों के लिए सादा-पाठ डेटा खोजने के लिए एक कमांड-लाइन उपयोगिता।
-q ग्रेप के लिए एक विकल्प जो सामान्य आउटपुट को दबाता है और केवल निकास स्थिति लौटाता है।
case बैश में पैटर्न से मिलान करने के लिए उपयोग किया जाने वाला एक सशर्त बयान।
;; विभिन्न पैटर्न क्रियाओं को अलग करने के लिए केस स्टेटमेंट में उपयोग किया जाने वाला एक सीमांकक।

बैश में सबस्ट्रिंग चेकिंग को समझना

पहली स्क्रिप्ट में, हम उपयोग करते हैं conditional statements यह जाँचने के लिए कि क्या किसी स्ट्रिंग में कोई विशिष्ट सबस्ट्रिंग है। हम एक मुख्य स्ट्रिंग और एक सबस्ट्रिंग को परिभाषित करते हैं, फिर इसका उपयोग करते हैं [[ ]] निर्माण, जो उन्नत स्ट्रिंग तुलना की अनुमति देता है। कोष्ठक के अंदर, हम का उपयोग करते हैं * सबस्ट्रिंग से पहले और बाद में किसी भी संख्या में वर्णों का प्रतिनिधित्व करने के लिए वाइल्डकार्ड। यदि स्थिति सत्य है, तो स्क्रिप्ट "यह वहाँ है!" प्रिंट करती है; अन्यथा, यह "यह वहां नहीं है!" प्रिंट करता है। यह विधि कुशल है और पैटर्न मिलान के लिए बैश की अंतर्निहित क्षमताओं का उपयोग करती है।

दूसरी लिपि कार्यरत है echo और grep समान परिणाम प्राप्त करने का आदेश देता है। हम फिर से एक मुख्य स्ट्रिंग और एक सबस्ट्रिंग को परिभाषित करते हैं, फिर उपयोग करते हैं echo मुख्य स्ट्रिंग को आउटपुट करने और इसे पाइप करने के लिए grep का उपयोग -q सामान्य आउटपुट को दबाने का विकल्प। Grep मुख्य स्ट्रिंग के भीतर सबस्ट्रिंग की खोज करता है। यदि सबस्ट्रिंग मिल जाती है, तो स्क्रिप्ट "यह वहां है!" प्रिंट करती है; यदि नहीं, तो यह प्रिंट करता है "यह वहां नहीं है!"। यह दृष्टिकोण शक्तिशाली पाठ-खोज क्षमताओं का लाभ उठाता है grep, इसे उन स्क्रिप्टों के लिए उपयुक्त बनाता है जहां जटिल पाठ पैटर्न का मिलान करने की आवश्यकता होती है।

उन्नत बैश स्ट्रिंग संचालन की खोज

तीसरी स्क्रिप्ट का उपयोग करता है case एक सबस्ट्रिंग की उपस्थिति की जाँच करने के लिए कथन। मुख्य स्ट्रिंग और सबस्ट्रिंग को परिभाषित करने के बाद, case कथन विभिन्न पैटर्न के विरुद्ध मुख्य स्ट्रिंग से मेल खाता है। यदि सबस्ट्रिंग मौजूद है, तो "यह वहां है!" प्रिंट करके संबंधित कार्रवाई निष्पादित की जाती है। यदि सबस्ट्रिंग नहीं मिलती है, तो डिफ़ॉल्ट क्रिया "यह वहां नहीं है!" प्रिंट करती है। यह विधि विशेष रूप से तब उपयोगी होती है जब जांचने के लिए कई पैटर्न हों case स्टेटमेंट मल्टीपल की तुलना में जटिल ब्रांचिंग लॉजिक को अधिक सफाई से संभाल सकता है if-else बयान.

कुल मिलाकर, इनमें से प्रत्येक विधि यह निर्धारित करने का एक तरीका प्रदान करती है कि किसी स्ट्रिंग में बैश में एक विशिष्ट सबस्ट्रिंग है या नहीं। विधि का चुनाव आवश्यक स्ट्रिंग मिलान की जटिलता और स्क्रिप्ट की विशिष्ट आवश्यकताओं पर निर्भर करता है। का उपयोग करते हुए [[ ]] वाइल्डकार्ड के साथ संयोजन करते समय सरल जांच के लिए सरल और कुशल है echo और grep अधिक शक्तिशाली पैटर्न मिलान प्रदान करता है। case दूसरी ओर, स्टेटमेंट कई मिलान स्थितियों को संरचित तरीके से संभालने के लिए आदर्श है।

बैश में सबस्ट्रिंग की जांच करने के लिए सशर्त विवरण का उपयोग करना

बैश स्क्रिप्टिंग विधि

#!/bin/bash
# Define the main string
string="My string"
# Define the substring to search for
substring="foo"
# Check if the substring is present in the main string
if [[ "$string" == *"$substring"* ]]; then
  echo "It's there!"
else
  echo "It's not there!"
fi

बैश में सबस्ट्रिंग का पता लगाने के लिए इको और ग्रेप का उपयोग करना

इको और ग्रेप कमांड का संयोजन

#!/bin/bash
# Define the main string
string="My string"
# Define the substring to search for
substring="foo"
# Use echo and grep to check if the substring is present
if echo "$string" | grep -q "$substring"; then
  echo "It's there!"
else
  echo "It's not there!"
fi

बैश में सबस्ट्रिंग डिटेक्शन के लिए केस स्टेटमेंट का उपयोग करना

केस स्टेटमेंट के साथ बैश स्क्रिप्टिंग

#!/bin/bash
# Define the main string
string="My string"
# Define the substring to search for
substring="foo"
# Use case statement to check for the substring
case "$string" in
  *"$substring"*)
    echo "It's there!"
    ;;
  *)
    echo "It's not there!"
    ;;
esac

बैश में स्ट्रिंग रोकथाम के लिए उन्नत तरीके

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

एक अन्य उन्नत तकनीक का उपयोग करना शामिल है sed कमांड, जो स्ट्रीम एडिटर के लिए है। Sed डेटा स्ट्रीम या फ़ाइल में टेक्स्ट को पार्स करने और बदलने के लिए उपयोगी है। आप उपयोग कर सकते हैं sed एक सबस्ट्रिंग की खोज करना और मिलान किए गए टेक्स्ट पर प्रतिस्थापन या अन्य ऑपरेशन करना। ये उन्नत विधियां, हालांकि अधिक जटिल हैं, बैश स्क्रिप्ट में टेक्स्ट प्रोसेसिंग के लिए शक्तिशाली क्षमताएं प्रदान करती हैं, जो उन्हें उन कार्यों के लिए अमूल्य बनाती हैं जिनके लिए परिष्कृत स्ट्रिंग हेरफेर की आवश्यकता होती है।

बैश में स्ट्रिंग कन्टेनमेंट के बारे में अक्सर पूछे जाने वाले प्रश्न

  1. मैं कैसे जांचूं कि किसी स्ट्रिंग में सबस्ट्रिंग का उपयोग किया गया है या नहीं awk?
  2. यह जांचने के लिए कि क्या किसी स्ट्रिंग में सबस्ट्रिंग का उपयोग किया गया है awk, आप कमांड का उपयोग कर सकते हैं: echo "$string" | awk '{if ($0 ~ /substring/) print "It's there!"}'
  3. क्या मैं उपयोग कर सकता हूँ sed किसी सबस्ट्रिंग की जाँच करने के लिए?
  4. हाँ, आप उपयोग कर सकते हैं sed कमांड के साथ सबस्ट्रिंग की जांच करने के लिए: echo "$string" | sed -n '/substring/p'
  5. प्रयोग करने से क्या फायदा है awk ऊपर grep?
  6. Awk अधिक शक्तिशाली पाठ प्रसंस्करण क्षमताएं प्रदान करता है और पैटर्न मिलान के आधार पर कार्य कर सकता है, जिससे यह अधिक बहुमुखी हो जाता है grep.
  7. सबस्ट्रिंग खोजते समय मैं केस को कैसे अनदेखा कर सकता हूं?
  8. किसी सबस्ट्रिंग की खोज करते समय मामले को अनदेखा करने के लिए, आप इसका उपयोग कर सकते हैं -i विकल्प के साथ grep: echo "$string" | grep -iq "substring"
  9. क्या इसका उपयोग संभव है regex साथ if बैश में बयान?
  10. हां, आप रेगेक्स का उपयोग कर सकते हैं if का उपयोग करके बैश में कथन =~ ऑपरेटर: if [[ "$string" =~ regex ]]; then

बैश में स्ट्रिंग कन्टेनमेंट पर अंतिम विचार

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