Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Bash प्रोग्रामिंग

Bash में फ़ाइल पढ़ने में मास्टरी: सर्वश्रेष्ठ While-लूप तकनीकें

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

while लूप का उपयोग करके फ़ाइल सामग्री पढ़ने का तरीका देखने से पहले, while लूप कैसे काम करता है इस पर एक त्वरित प्राइमर। While लूप एक शर्त का मूल्यांकन करता है और जब शर्त सत्य होती है तो कोड के दिए गए सेट पर पुनरावृति करता है।

while [ CONDITION ]
do
  code block
done

आइए while लूप सिंटैक्स को तोड़ें।

  • while लूप को एक while कीवर्ड के बाद एक शर्त के साथ शुरू करना चाहिए।
  • एक शर्त को [ ] या [[ ]] के भीतर संलग्न किया जाना चाहिए। लूप निष्पादित होने के लिए शर्त हमेशा सत्य होनी चाहिए।
  • वास्तविक कोड ब्लॉक do और done के बीच रखा जाएगा।
NUMBER=0
while [[ $NUMBER -le 10 ]]
do
  echo " Welcome ${NUMBER} times "
  (( NUMBER++ ))
done
Bash में फ़ाइल पढ़ने में मास्टरी: सर्वश्रेष्ठ While-लूप तकनीकें

यह एक बहुत ही सरल उदाहरण है, जहां लूप तब तक चलता है जब तक NUMBER 10 से अधिक नहीं होता और echo स्टेटमेंट प्रिंट करता है।

while के साथ हम फ़ाइल की सामग्री को लाइन दर लाइन पढ़ने के लिए read कमांड का उपयोग करेंगे। नीचे सिंटैक्स है कि कैसे while और read कमांड संयुक्त हैं। अब फ़ाइल को इनपुट के रूप में पास करने के अलग-अलग तरीके हैं और हम उन सभी को देखेंगे।

# सिंटैक्स
while read VARIABLE
do
  code
done

लिनक्स में पाइपिंग

आम तौर पर हम टर्मिनल से फ़ाइल की सामग्री देखने के लिए cat कमांड का उपयोग करेंगे। साथ ही, हम cat कमांड के आउटपुट को grep, sort आदि जैसे अन्य कमांड्स पर पाइप करेंगे।

इसी तरह, हम यहां फ़ाइल की सामग्री पढ़ने के लिए cat कमांड का उपयोग करेंगे और इसे while लूप पर पाइप करेंगे। प्रदर्शन के लिए, मैं /etc/passwd फ़ाइल का उपयोग कर रहा हूँ लेकिन इस फ़ाइल के साथ छेड़छाड़ करना उचित नहीं है इसलिए यदि आप चाहें तो इस फ़ाइल की बैकअप कॉपी लें और इसके साथ खेलें।

cat /etc/passwd | while read LREAD
do
  echo ${LREAD}
done
Bash में फ़ाइल पढ़ने में मास्टरी: सर्वश्रेष्ठ While-लूप तकनीकें Bash में फ़ाइल पढ़ने में मास्टरी: सर्वश्रेष्ठ While-लूप तकनीकें

आइए देखें कि जब उपरोक्त कोड सबमिट किया जाता है तो क्या होगा।

  • cat /etc/passwd फ़ाइल की सामग्री पढ़ेगा और इसे पाइप के माध्यम से इनपुट के रूप में पास करेगा।
  • read कमांड cat कमांड से पास किए गए इनपुट की प्रत्येक लाइन को पढ़ता है और इसे LREAD वेरिएबल में स्टोर करता है।
  • read कमांड फ़ाइल सामग्री को तब तक पढ़ेगा जब तक EOL की व्याख्या नहीं की जाती।

आप head, tail जैसे अन्य कमांड्स का भी उपयोग कर सकते हैं और इसे while लूप पर पाइप कर सकते हैं।

head -n 5 /etc/passwd | while read LREAD
do
  echo ${LREAD}
done
Bash में फ़ाइल पढ़ने में मास्टरी: सर्वश्रेष्ठ While-लूप तकनीकें

लिनक्स में इनपुट रीडायरेक्शन

हम इनपुट रीडायरेक्शन ऑपरेटर (<) का उपयोग करके फ़ाइल की सामग्री को while लूप पर रीडायरेक्ट कर सकते हैं।

while read LREAD
do
  echo ${LREAD}
done < /etc/passwd | head -n 5
Bash में फ़ाइल पढ़ने में मास्टरी: सर्वश्रेष्ठ While-लूप तकनीकें

आप फ़ाइल नाम को एक वेरिएबल में भी स्टोर कर सकते हैं और इसे रीडायरेक्शन ऑपरेटर के माध्यम से पास कर सकते हैं।

FILENAME="/etc/passwd"
while read LREAD
do
  echo ${LREAD}
done < ${FILENAME}
Bash में फ़ाइल पढ़ने में मास्टरी: सर्वश्रेष्ठ While-लूप तकनीकें

आप अपने स्क्रिप्ट के लिए फ़ाइल नाम को तर्क के रूप में भी पास कर सकते हैं।

while read LREAD
do
  echo ${LREAD}
done < $1 | head -n 5
Bash में फ़ाइल पढ़ने में मास्टरी: सर्वश्रेष्ठ While-लूप तकनीकें

इंटरनल फील्ड सेपरेटर

आप विभिन्न प्रकार के फ़ाइल फॉर्मेट (CSV, TXT, JSON) के साथ काम कर सकते हैं और आप फ़ाइल की सामग्री को कस्टम डिलीमीटर के आधार पर विभाजित करना चाह सकते हैं। इस मामले में, आप फ़ाइल की सामग्री को विभाजित करने और इसे वेरिएबल्स में स्टोर करने के लिए "इंटरनल फील्ड सेपरेटर (IFS)" का उपयोग कर सकते हैं।

मैं प्रदर्शित करूंगा कि यह कैसे काम करता है। /etc/passwd फ़ाइल पर एक नज़र डालें जिसमें डिलीमीटर के रूप में कोलन (:) है। अब आप एक लाइन से प्रत्येक शब्द को विभाजित कर सकते हैं और इसे एक अलग वेरिएबल में स्टोर कर सकते हैं।

नीचे दिए गए उदाहरण में, मैं /etc/passwd फ़ाइल को कोलन के रूप में अपने सेपरेटर के साथ विभाजित कर रहा हूँ और प्रत्येक विभाजन को अलग-अलग वेरिएबल्स में स्टोर कर रहा हूँ।

while IFS=":" read A B C D E F G
do
  echo ${A}
  echo ${B}
  echo ${C}
  echo ${D}
  echo ${E}
  echo ${F}
  echo ${G}
done < /etc/passwd
Bash में फ़ाइल पढ़ने में मास्टरी: सर्वश्रेष्ठ While-लूप तकनीकें

मैंने स्क्रीनशॉट आकार को ध्यान में रखते हुए उपरोक्त स्क्रीनशॉट में केवल एक लाइन विभाजन प्रदर्शित किया है।

लिनक्स में खाली लाइनें

जब आप फ़ाइल सामग्री के माध्यम से लूप करते हैं तो खाली लाइनें अनदेखी नहीं की जातीं। इसे प्रदर्शित करने के लिए मैंने नीचे दी गई सामग्री के साथ एक नमूना फ़ाइल बनाई है। 4 लाइनें हैं और कुछ खाली लाइनें, लीडिंग व्हाइटस्पेस, ट्रेलिंग व्हाइट स्पेस, लाइन 2 में टैब कैरेक्टर, और कुछ एस्केप कैरेक्टर (\n और \t)।

Bash में फ़ाइल पढ़ने में मास्टरी: सर्वश्रेष्ठ While-लूप तकनीकें Bash में फ़ाइल पढ़ने में मास्टरी: सर्वश्रेष्ठ While-लूप तकनीकें
while read LREAD
do
  echo ${LREAD}
done < testfile
Bash में फ़ाइल पढ़ने में मास्टरी: सर्वश्रेष्ठ While-लूप तकनीकें

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

while read LREAD
do
  if [[ ! -z $LREAD ]]
  then
    echo ${LREAD}
  fi
done < testfile
Bash में फ़ाइल पढ़ने में मास्टरी: सर्वश्रेष्ठ While-लूप तकनीकें

अब आउटपुट से, आप देख सकते हैं कि खाली लाइनें अनदेखी की गई हैं।

एस्केप कैरेक्टर्स

\n, \t, \c जैसे एस्केप कैरेक्टर्स फ़ाइल पढ़ते समय प्रिंट नहीं होंगे। इसे प्रदर्शित करने के लिए मैं उसी नमूना फ़ाइल का उपयोग कर रहा हूँ जिसमें कुछ एस्केप कैरेक्टर हैं।

Bash में फ़ाइल पढ़ने में मास्टरी: सर्वश्रेष्ठ While-लूप तकनीकें Bash में फ़ाइल पढ़ने में मास्टरी: सर्वश्रेष्ठ While-लूप तकनीकें
while read LREAD
do
  echo ${LREAD}
done < testfile
Bash में फ़ाइल पढ़ने में मास्टरी: सर्वश्रेष्ठ While-लूप तकनीकें

आउटपुट से आप देख सकते हैं कि एस्केप कैरेक्टर्स ने अपना अर्थ खो दिया है और \n और \t के बजाय केवल n और t प्रिंट हुए हैं। आप बैकस्लैश व्याख्या को रोकने के लिए -r का उपयोग कर सकते हैं।

while read -r LREAD
do
  echo ${LREAD}
done < testfile
Bash में फ़ाइल पढ़ने में मास्टरी: सर्वश्रेष्ठ While-लूप तकनीकें

इस लेख के लिए बस इतना ही। अगर कोई प्रतिक्रिया या सुझाव हो तो हम आपसे सुनना पसंद करेंगे। आपकी प्रतिक्रिया ही हमें बेहतर कंटेंट बनाने में मदद करती है। पढ़ते रहें और समर्थन करते रहें।

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

    लिनक्स में अपने डेटा का बैकअप लेने के लिए कई विकल्प हैं। आप कुछ मुफ्त उपलब्ध सॉफ़्टवेयर प्रोग्राम का उपयोग कर सकते हैं, जैसे fwbackups और Sbackup। हालांकि, बिना कोई अतिरिक्त सॉफ़्टवेयर इंस्टॉल किए एक डायरेक्टरी का बैकअप लेने का एक सरल तरीका है। हम वेरिएबल्स, tar कमांड और date कमांड का उपयोग करके एक

  1. जावास्क्रिप्ट में फ्लो चार्ट का उपयोग करके व्हाइल लूप कैसे दिखाएं? जावास्क्रिप्ट में फ्लो चार्ट का उपयोग करके व्हाइल लूप कैसे दिखाएं?

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

  1. CSV फ़ाइलों को Excel में तेजी से आयात करें: 4 सिद्ध तकनीकें CSV फ़ाइलों को Excel में तेजी से आयात करें: 4 सिद्ध तकनीकें

    Excel में काम करते समय, आपको अक्सर CSV फ़ाइल से निपटना पड़ सकता है। यह कॉलम बनाए रखते हुए CSV फ़ाइल को Excel में खोलना, CSV फ़ाइल को Excel फ़ाइल में बदलना, कनेक्शन बनाना, या कुछ और हो सकता है। हालांकि, CSV फ़ाइल को Excel में पढ़ना या खोलना ऐसी फ़ाइल के भीतर टेक्स्ट-आधारित डेटा पर Excel सुविधाओं का उ