लिनक्स: फाइल को लाइन से पढ़ें

दिसम्बर 2016


इस आर्टिकल में उदाहरणों की मदद से आपको यह समझाया जाएगा कि लिनक्स में किसी फाइल को लाइन से कैसे पढ़ा जाए. इस आर्टिकल में उन त्रुटियों कि भी चर्चा की गई है जो कोई सामान्य प्रयोगकर्ता लाइन से फाइल पढ़ने के दौरान करता है. उदाहरणों एवं चित्रों की मदद से यह समझाया गया है कि अलग लग आउटपुट के लिए for loop (फॉर लूप) एवं while loop (व्हाइल लूप) में क्या अंतर है. इस आर्टिकल से यह भी समझने में मदद मिलेगी कि व्हाइल लूप का प्रयोग कैसे किया जाता है.

लीनक्स पर सबसे सामान्य गलती तब होती है जब आप लूप की सहायता से किसी फाइल को लाइन से ($ में लाइन के लिए (cat file.txt). ..) पढ़ने की कोशिश करते हैं. इस उदाहरण में हर लाइन को पढ़ने की कोशिश की गई है ना कि हर शब्द को.

लूप शुरू करने से पहले फॉर लूप के लिए $ आईएफएस (इंटरनल फील्ड सेपरेटर) की वेल्यु बदली जा सकती है.

फॉर लूप के लिए सैम्पल आउटपुट

$ (cat file.txt) में for line का "$ line" इको पूर्ण
This           
is
row
No
1
This
is
row
No
2
This

[...]

इंटरनल रीड के साथ व्हाइल लूप इसका समाधान है.

लूप शुरू करने से पहले एक फॉर लूप के लिए $ आईएफएस (इंटरनल फील्ड सेपरेटर) की वेल्यु बदलकर परिणाम पाया जा सकता है.

व्हाइल लूप (While loop)


यह व्हाइल लूप फाइल को लाइन से पढ़ने का सबसे उचित माध्यम है
सिंटेक्स

while read line           
do
command
done <file

उदाहरण

पहली फाइल:
This is line 1     

  • This is line 2 *This is line 3 *This is line 4 *This is line 5


कमांड लाइन में निर्देश:
while read line; do echo -e "$line\n"; done < file.txt


या "बैश" स्क्रिप्ट में:
#! / bin / bash           

while read line
do
echo-e "$ line \ n"
done <file.txt

The output on the screen (stdout):
This is line 1

This is line 2

This is line 3

This is line 4

This is line 5

टिप

संरचित फाइल से (जैसे कोई एड्रेस बुक or /etc/पासवर्ड, उदहारण के लिए) प्रत्यके फील्ड से उसका महत्व पुनःप्राप्त किया जा सकता है. इसी के साथ रीड निर्देश की सहायता से कुछ अन्य वेरियेबल भी असाइन किए जा सकते हैं. आईएफएस वेरिएबल एवं फील्ड सेपरेटर को ध्यान से स्थापित करें.

उदाहरण:
#! /bin/bash          

while IFS=: read user pass uid gid full home shell
do
echo -e "$full :\n\
Pseudo : $user\n\
UID :\t $uid\n\
GID :\t $gid\n\
Home :\t $home\n\
Shell :\t $shell\n\n"
done < /etc/passwd

बोनस

while read i; do echo -e "Parameter : $i"; done < <(echo -e "a\nab\nc")

लूप आरंभ करें

हालाकिं व्हाइल लूप सबसे आसान तरीका माना जाता है, इसके साइड इफेक्ट भी होते हैं. यह लाइन की संरचना, फोर्मेशन, स्पेस को बिगाड़ सकता है.
सिंटेक्स

old_IFS=$IFS      # save the field separator           
IFS=$'\n' # new field separator, the end of line
for line in $(cat fichier)
do
command
done
IFS=$old_IFS # restore default field separator

यह भी पढ़ें :
CCM (in.ccm.net) पर उपलब्ध यह डॉक्युमेंट«  लिनक्स: फाइल को लाइन से पढ़ें  » क्रिएटिव कॉमन लाइसेंस के तहत उपलब्ध कराया गया है. जैसा कि इस नोट में साफ जाहिर है, आप इस पन्ने को लाइसेंस के तहत दी गई शर्तों के मुताबिक संशोधित और कॉपी कर सकते हैं.