यह लेख आपको दिखाएगा कि बैश/शैल स्क्रिप्ट में किसी दिए गए सीमांकक पर एक स्ट्रिंग को कैसे विभाजित किया जाए और कुछ उदाहरण दिखाए जाएं।
स्ट्रिंग्स को विभाजित करना आपकी स्क्रिप्ट को क्राफ्ट करते समय उपलब्ध होना एक आसान कार्य है। सीएसवी (कॉमा सेपरेटेड वैल्यू) एक सामान्य प्रारूप है जिसमें डेटा ऑनलाइन उपलब्ध कराया जाता है, जहां एक तालिका में डेटा फ़ील्ड (आश्चर्य) अल्पविराम से अलग होते हैं।
आप बस एक वाक्य को रिक्त स्थान पर शब्दों में विभाजित करना चाहते हैं, या पैराग्राफ को वाक्यों में विभाजित करना चाहते हैं, और इसी तरह।
कई समाधान स्ट्रिंग को विभाजित करने के बैश-विशिष्ट तरीकों पर ध्यान केंद्रित करते हैं। नीचे, मैं एक ऐसी विधि की रूपरेखा तैयार करूँगा जो किसी भी Linux शेल स्क्रिप्ट में काम करे।
कट का उपयोग करना स्ट्रिंग्स को विभाजित करने का आदेश
कट Linux में कमांड टेक्स्ट फ़ाइल की पंक्तियों से अनुभागों को हटाता है और फिर उन्हें आउटपुट करता है।
यह उदाहरण किसी दिए गए सीमांकक पर पाठ को विभाजित करने के लिए इस आदेश को अनुकूलित करेगा।
कट . के संपूर्ण उपयोगकर्ता मैनुअल के लिए आदेश, यहां क्लिक करें।
कोड
नीचे एक उदाहरण बैश स्क्रिप्ट है जो स्ट्रिंग splitMe . लेती है और अल्पविराम पर स्ट्रिंग स्प्लिट में उनकी स्थिति के आधार पर आइटम लौटाता है (, ):
#!/bin/bash # Define a comma-separated string splitMe='apple,banana,grape,kiwi' # Get the first item in the split string firstItem="$(echo $splitMe | cut -d',' -f1)" # Get the third item in the split string thirdItem="$(echo $splitMe | cut -d',' -f3)" # Confirm the result by outputting it to screen echo $thirdItemपर आउटपुट करके परिणाम की पुष्टि करें
तो यह क्यों काम करता है? गूंज कमांड का उपयोग मूल स्ट्रिंग को कट . में पाइप करने के लिए किया जाता है आज्ञा। कट आदेश -d . का उपयोग करता है सीमांकक निर्दिष्ट करने का विकल्प (इस मामले में एक अल्पविराम, लेकिन किसी भी वर्ण या स्ट्रिंग का उपयोग किया जा सकता है ), और -f विकल्प के बाद यह निर्दिष्ट करने के लिए कि कौन सा फ़ील्ड लौटाया जाना चाहिए - यह उस आइटम की स्थिति है जिसे आप विभाजित स्ट्रिंग से प्राप्त करना चाहते हैं।
पुन:प्रयोज्य बैश फ़ंक्शन
यह सब ठीक है और अच्छा है, लेकिन यह वास्तव में पुन:उपयोग योग्य नहीं है - इसलिए यहां यह एक फ़ंक्शन में है:
#!/bin/bash # Define function to split strings # It will accept three parameters, the string to split, the delimiter, and finally the position of the item to return splitMyString(){ splitString=$1 delimiter=$2 item=$3 result="$(echo $splitString | cut -d',' -f$item)" echo $result } # Define a string to split for testing splitMe='apple,banana,grape,kiwi' # Test the function by splitting the string at the comma and returning the second item echo $(splitMyString $splitMe "," 2)