बैश: लाइन पढ़ते समय

Bash While Read Line



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

पढ़ते समय लाइन का मूल सिंटैक्स

लूप के दौरान फ़ाइल को पढ़ने के लिए बैश शेल के लिए निम्न सिंटैक्स का उपयोग किया जाता है:







जबकि पढ़ना -आररेखा;
करना
फेंक दिया '$लाइन';
किया हुआ <इनपुट फ़ाइल

उपर्युक्त सिंटैक्स में विकल्प '-r' कमांड को पढ़ने के लिए पारित किया गया है जो बैकस्लैश से बचने से बचता है। 'इनपुट_फाइल' विकल्प ने आपकी फ़ाइल के नाम का प्रतिनिधित्व किया है जिसे आप 'रीड' कमांड का उपयोग करके एक्सेस करना चाहते हैं।



आंतरिक क्षेत्र विभाजक को IFS के रूप में संक्षिप्त किया जा सकता है, इससे पहले कि रीड कमांड को नल स्ट्रिंग पर सेट किया जाता है, जो प्रमुख या पीछे वाले व्हाइटस्पेस को ट्रिम होने से रोकता है।



जबकि भारतीय विदेश सेवा=पढ़ना -आररेखा;
करना
फेंक दिया $लाइन;
किया हुआ <इनपुट फ़ाइल

Ctrl + Alt + t शॉर्टकट का उपयोग करके टर्मिनल खोलें और फिर उस पर निम्न कमांड चलाएँ।





उदाहरण # 1: फ़ाइल रीडिंग लाइन बाय लाइन

आइए एक उदाहरण लेते हैं जिसमें मान लीजिए कि हमारे पास OS.txt नाम की एक फाइल है जिसमें सभी महत्वपूर्ण लिनक्स वितरण के नाम हैं। यदि आप 'कैट' कमांड का उपयोग किए बिना किसी फ़ाइल को पढ़ना चाहते हैं, तो इस उद्देश्य के लिए आप विशेष कार्य को करने के लिए निम्न कमांड निष्पादित कर सकते हैं। हम उस समय लूप का उपयोग करेंगे जो OS.txt फ़ाइल की प्रत्येक पंक्ति को पढ़ेगा और प्रत्येक चरण में सामग्री को एक चर $line में संग्रहीत करेगा जिसे आप बाद में प्रदर्शित कर सकते हैं।

OS.txt में Linux वितरण के निम्नलिखित नाम चिपकाएँ:



Centos
उबंटू
डेबियन
लिनक्समिंट $जबकि पढ़नारेखा;
करना
फेंक दिया $लाइन;
किया हुआ <ओएस.txt


उपरोक्त आदेश से, आपको टर्मिनल विंडो पर निम्न प्रतिक्रिया मिलेगी:

उदाहरण # 2: बैश स्क्रिप्ट का उपयोग करके फ़ाइल पढ़ना

एक बैश फ़ाइल बनाएँ और फिर फ़ाइल सामग्री को पढ़ने के लिए इस फ़ाइल में नीचे दिया गया कोड जोड़ें। आप पिछली टेक्स्ट फ़ाइल को एक नए वेरिएबल $filename में स्टोर कर सकते हैं और वेरिएबल $n प्रत्येक लाइन के मान को बनाए रखने के लिए उपयोग किया जाता है। अब, जबकि लूप का उपयोग करके हम एक फ़ाइल से प्रत्येक पंक्ति को एक विशेष पंक्ति संख्या के साथ पढ़ेंगे।

#!/बिन/बैश
फ़ाइल का नाम='OS.txt'
एन=1
जबकि पढ़नारेखा;
करना
#हर लाइन पढ़ने के लिए
फेंक दिया 'ओएस वितरण लाइन नं।$n:$लाइन'
एन= $((एन+1))
किया हुआ < $फ़ाइलनाम

फ़ाइल को OSinfo.sh नाम से सहेजें और उपरोक्त बैश स्क्रिप्ट को चलाने के लिए टर्मिनल पर निम्न कमांड टाइप करें।

$दे घुमा केOSinfo.sh

अब, मूल फ़ाइल सामग्री देखने के लिए कैट कमांड चलाएँ।

$बिल्लीओएस.txt

फ़ाइल पढ़ने के लिए वैकल्पिक तरीका

कमांड से पासिंग फ़ाइल नाम का उपयोग करना

बैश फ़ाइल में, आपको निम्न कोड स्क्रिप्ट जोड़ने की आवश्यकता है। इस स्क्रिप्ट में, हमें एक फ़ाइल नाम को एक तर्क के रूप में लेना होगा। सबसे पहले, तर्क का मान $1 चर द्वारा पढ़ा जाता है जिसमें पढ़ने के लिए फ़ाइल नाम होता है। यह जाँच करेगा कि फ़ाइल नाम निर्दिष्ट स्थान पर मौजूद है, फिर लूप का उपयोग करके यह पिछले उदाहरण के समान एक फ़ाइल लाइन को लाइन से पढ़ता है।

#!/बिन/बैश
फ़ाइल का नाम=$ 1
जबकि पढ़नारेखा;करना
#प्रत्येक पंक्ति को पढ़ना
फेंक दिया $लाइन
किया हुआ < $फ़ाइल।टेक्स्ट

उपरोक्त स्क्रिप्ट को 'Readline.sh' नाम से सेव करें और उपर्युक्त स्क्रिप्ट को चलाने के लिए टर्मिनल पर निम्न कमांड निष्पादित करें:

उपरोक्त आउटपुट में, आप देखेंगे कि फ़ाइल 'OSinfo.txt' एक तर्क के रूप में गुजर रही है और अतिरिक्त रिक्त स्थान को हटाने के बाद 'OSinfo.txt' की सामग्री प्रदर्शित की जाएगी। आप 'cat OSinfo.txt' चलाकर मूल फ़ाइल सामग्री प्रदर्शित कर सकते हैं।

निष्कर्ष

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