बॅशमध्ये स्ट्रिंग मॅनिप्युलेशन तोडणे
शेल स्क्रिप्ट्ससह कार्य करताना, एक सामान्य कार्य म्हणजे परिसीमकाच्या आधारे स्ट्रिंग विभाजित करणे. उदाहरणार्थ, अर्धविरामांनी विभक्त केलेले ईमेल पत्ते असलेली स्ट्रिंग विचारात घ्या. तुम्हाला प्रत्येक ईमेलवर स्वतंत्रपणे प्रक्रिया करायची असल्यास, ही स्ट्रिंग कशी विभाजित करायची हे समजून घेणे आवश्यक आहे. हा लेख बॅशमध्ये हे साध्य करण्यासाठी विविध पद्धतींद्वारे मार्गदर्शन करेल.
आम्ही `tr` कमांड वापरणे आणि अंतर्गत फील्ड सेपरेटर (IFS) हाताळणे यासारखे उपाय शोधू. अखेरीस, तुम्ही स्ट्रिंग स्प्लिटिंग कार्यक्षमतेने हाताळण्यास आणि IFS ला त्याच्या डीफॉल्ट मूल्यावर रीसेट करण्यात सक्षम व्हाल. चला आत जा आणि तुमची बॅश स्क्रिप्टिंग कार्ये सुलभ करूया!
आज्ञा | वर्णन |
---|---|
tr | अक्षरे भाषांतरित करते किंवा हटवते. स्ट्रिंग विभाजित करण्यासाठी येथे अर्धविराम नवीन ओळ वर्णाने बदलण्यासाठी वापरले जाते. |
IFS | इंटर्नल फील्ड सेपरेटर, बॅश स्क्रिप्ट्समधील विशिष्ट डिलिमिटरवर आधारित स्ट्रिंग्स विभाजित करण्यासाठी वापरला जातो. |
read -r -a | इनपुटची एक ओळ वाचते आणि ॲरेमध्ये विभाजित करते. -r पर्याय बॅकस्लॅशला एस्केप कॅरेक्टर म्हणून अर्थ लावण्यापासून प्रतिबंधित करतो. |
echo | मानक आउटपुटवर मजकूर मुद्रित करते. स्प्लिट स्ट्रिंग घटक प्रदर्शित करण्यासाठी वापरले जाते. |
split | एक पर्ल फंक्शन जे स्ट्रिंगला स्ट्रिंग्सच्या सूचीमध्ये विभाजीत करते विशिष्ट डिलिमिटरवर आधारित. |
foreach | एक पर्ल लूप रचना जी मूल्यांच्या सूचीवर पुनरावृत्ती करते. |
बॅश स्ट्रिंग स्प्लिटिंग तंत्र समजून घेणे
फर्स्ट बॅश स्क्रिप्ट वापरून स्ट्रिंग कशी विभाजित करायची हे दाखवते tr आज्ञा येथे, आम्ही एक स्ट्रिंग परिभाषित करतो १ आणि वापरा echo संयोगाने tr अर्धविराम परिसीमक नवीन ओळीच्या वर्णात अनुवादित करण्यासाठी. हे प्रभावीपणे स्ट्रिंगला वैयक्तिक ओळींमध्ये मोडते. द for loop नंतर चौकोनी कंसात पत्ते मुद्रित करून, प्रत्येक ओळीवर पुनरावृत्ती होते. ही पद्धत सरळ आहे आणि स्ट्रिंग्स हाताळण्यासाठी युनिक्स कमांडच्या शक्तिशाली मजकूर प्रक्रिया क्षमतांचा फायदा घेते.
दुसर्या पद्धतीमध्ये समायोजित करणे समाविष्ट आहे ५. तात्पुरते सेटिंग करून IFS अर्धविरामात, आपण स्ट्रिंगला ॲरेमध्ये विभाजित करू शकतो. आम्ही मूळ जतन करतो IFS करण्यासाठी OIFS ते सुधारित करण्यापूर्वी, आम्ही ते नंतर पुनर्संचयित करू शकतो याची खात्री करून. द ९ कमांड नावाच्या ॲरेमध्ये इनपुट स्ट्रिंग वाचते mails2, सुधारित आधारावर विभाजित करणे IFS. प्रक्रिया केल्यानंतर, मूळ IFS पुनर्संचयित केले जाते. हा दृष्टीकोन बॅशमध्ये स्ट्रिंग स्प्लिटिंग हाताळण्यासाठी अधिक प्रोग्रामेटिक मार्ग प्रदान करतो, ज्यामुळे आम्हाला पुढील हाताळणीसाठी ॲरे वापरता येतात.
डिलिमिटरवर स्ट्रिंग विभाजित करण्यासाठी बॅश वापरणे
बॅश स्क्रिप्ट
#!/usr/bin/env bash
# Input string
IN="bla@some.com;john@home.com"
# Split string using 'tr' and iterate
mails=$(echo $IN | tr ";" "\n")
for addr in $mails; do
echo "> [$addr]"
done
# Output:
# > [bla@some.com]
# > [john@home.com]
IFS वापरून बॅशमध्ये स्ट्रिंग विभाजित करणे
बॅश स्क्रिप्ट
१
स्ट्रिंग स्प्लिटिंगसाठी पायथन वापरणे
पायथन स्क्रिप्ट
#!/usr/bin/env python3
# Input string
IN = "bla@some.com;john@home.com"
# Split string by semicolon
mails = IN.split(';')
# Iterate and print each element
for addr in mails:
print(f"> [{addr}]")
# Output:
# > [bla@some.com]
# > [john@home.com]
स्ट्रिंग विभाजित करण्यासाठी पर्ल वापरणे
पर्ल स्क्रिप्ट
#!/usr/bin/env perl
use strict;
use warnings;
# Input string
my $IN = "bla@some.com;john@home.com";
# Split string by semicolon
my @mails = split(';', $IN);
# Iterate and print each element
foreach my $addr (@mails) {
print "> [$addr]\n";
}
# Output:
# > [bla@some.com]
# > [john@home.com]
बॅशमध्ये प्रगत स्ट्रिंग स्प्लिटिंग तंत्र
बॅशमध्ये स्ट्रिंग्स विभाजित करण्यासाठी आणखी एक शक्तिशाली पद्धत वापरणे समाविष्ट आहे awk आज्ञा awk पॅटर्न स्कॅनिंग आणि प्रोसेसिंगसाठी डिझाइन केलेली एक अष्टपैलू कमांड-लाइन युटिलिटी आहे. हे विशेषत: स्प्लिटिंग स्ट्रिंगसाठी उपयुक्त ठरू शकते कारण ते आम्हाला सानुकूल फील्ड विभाजक परिभाषित करण्यास अनुमती देते. उदाहरणार्थ, आम्ही वापरू शकतो १५ अर्धविराम परिसीमावर आधारित स्ट्रिंग विभाजित करण्यासाठी आणि वैयक्तिक घटक मुद्रित करण्यासाठी. ही पद्धत अत्यंत लवचिक आहे आणि अधिक जटिल स्ट्रिंग हाताळणी कार्ये हाताळू शकते, ज्यामुळे ते बॅश प्रोग्रामरच्या टूलकिटमध्ये एक मौल्यवान साधन बनते.
याव्यतिरिक्त, द cut सीमांककांवर आधारित स्ट्रिंग्स विभाजित करण्यासाठी कमांडचा वापर केला जाऊ शकतो. द cut कमांडचा वापर सामान्यत: इनपुट डेटाच्या प्रत्येक ओळीतून विभाग काढण्यासाठी केला जातो. सह परिसीमक निर्दिष्ट करून १८ पर्याय आणि सह फील्ड निवडणे -f पर्याय, आम्ही कार्यक्षमतेने स्ट्रिंगचे भाग विभाजित आणि काढू शकतो. उदाहरणार्थ, वापरणे echo $IN | cut -d';' -f1 इनपुट स्ट्रिंगमधून पहिला ईमेल पत्ता काढेल. या प्रगत पद्धती बॅशमधील स्ट्रिंग मॅनिपुलेशन कार्यांसाठी अधिक नियंत्रण आणि अचूकता प्रदान करतात.
बॅशमध्ये स्ट्रिंग स्प्लिटिंगबद्दल सामान्य प्रश्न आणि उत्तरे
- मी बॅशमध्ये डिलिमिटरवर स्ट्रिंग कशी विभाजित करू?
- आपण वापरू शकता IFS व्हेरिएबल किंवा आज्ञा जसे tr, awk, आणि cut डिलिमिटरवर स्ट्रिंग्स विभाजित करणे.
- काय आहे IFS बॅश मध्ये व्हेरिएबल?
- द IFS (इंटर्नल फील्ड सेपरेटर) हे एक विशेष व्हेरिएबल आहे जे इनपुट मजकूर शब्द किंवा टोकनमध्ये विभाजित करण्यासाठी वापरलेले वर्ण परिभाषित करते.
- मी कसे रीसेट करू शकतो IFS व्हेरिएबल त्याच्या डीफॉल्ट मूल्यासाठी?
- मूळ जतन करा IFS मूल्य बदलण्यापूर्वी, आणि प्रक्रिया केल्यानंतर ते पुनर्संचयित करा: OIFS=$IFS; IFS=';'; ... ; IFS=$OIFS.
- काय करते tr स्ट्रिंग स्प्लिटिंगमध्ये कमांड डू?
- द tr कमांड अक्षरांचे भाषांतर करते किंवा हटवते. स्ट्रिंग विभाजित करण्यासाठी ते सीमांककांना नवीन रेषांसह बदलू शकते: echo $IN | tr ";" "\n".
- मी बॅश वापरून ॲरेमध्ये स्ट्रिंग विभाजित करू शकतो?
- होय, बदलून IFS व्हेरिएबल आणि वापरणे ९, तुम्ही ॲरेमध्ये स्ट्रिंग विभाजित करू शकता: read -r -a array <<< "$string".
- काय आहे awk आज्ञा वापरली?
- awk पॅटर्न स्कॅनिंग आणि प्रोसेसिंगसाठी कमांड-लाइन युटिलिटी आहे. हे सानुकूल फील्ड विभाजक परिभाषित करून स्ट्रिंग विभाजित करू शकते.
- कसे करते cut आदेश कार्य?
- द cut कमांड इनपुटच्या प्रत्येक ओळीतून विभाग काढते. हे सीमांकक निर्दिष्ट करून आणि फील्ड निवडून स्ट्रिंग विभाजित करू शकते: echo $string | cut -d';' -f1.
- का वापरत आहे IFS स्ट्रिंग स्प्लिटिंगमध्ये उपयुक्त?
- वापरत आहे IFS वेगवेगळ्या इनपुट फॉरमॅट्ससाठी ते अष्टपैलू बनवून, स्प्लिटिंग स्ट्रिंगसाठी कस्टम डिलिमिटर परिभाषित करण्याची परवानगी देते.
- बॅशमध्ये स्ट्रिंगला अनेक परिसीमकांनी विभाजित करणे शक्य आहे का?
- होय, आपण संयोजन वापरू शकता tr आणि awk एकाधिक सीमांकक हाताळण्यासाठी.
- मी वापरू शकतो ४५ बॅशमध्ये स्ट्रिंग स्प्लिटिंगसाठी?
- असताना ४५ हे प्रामुख्याने एक प्रवाह संपादक आहे, ते इतर कमांडसह एकत्र केले जाऊ शकते awk अप्रत्यक्षपणे स्ट्रिंग्स विभाजित करणे.
बॅशमध्ये स्ट्रिंग स्प्लिटिंगवर अंतिम विचार
बॅशमध्ये स्ट्रिंग मॅनिप्युलेशन मास्टर केल्याने तुमची स्क्रिप्टिंग कार्यक्षमता लक्षणीयरीत्या सुधारू शकते. वापरत आहे की नाही IFS साध्या सीमांककांसाठी किंवा अधिक प्रगत साधनांसाठी tr आणि awk, ही तंत्रे प्रभावी बॅश प्रोग्रामिंगसाठी आवश्यक आहेत. नेहमी मूळ पुनर्संचयित करण्याचे लक्षात ठेवा IFS तुमच्या स्क्रिप्टमध्ये अनपेक्षित वर्तन टाळण्यासाठी. या पद्धतींसह, तुम्ही तुमच्या बॅश स्क्रिप्टमध्ये स्ट्रिंग प्रोसेसिंग टास्कची विस्तृत श्रेणी हाताळू शकता.