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

अगस्त 2017

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


For लूप मे होने वाली सामान्य गलतियाँ

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

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

For लूप के लिए यह है एक आउटपुट का एक उदाहरण

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

[...]

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

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

While लूप

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

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


Image: © Linux.

यह भी पढ़ें

ओरिजिनल आर्टिकल deri58 ने पब्लिश किया. RanuP ने अनुवाद किया. ताजा अपडेट: 29 जुलाई, 2017 को अपराह्न 10:58 बजे RanuP ने किया.
CCM (in.ccm.net) पर उपलब्ध यह डॉक्युमेंट "लीनक्स: फाइल को लाइन से पढ़ें" क्रिएटिव कॉमन लाइसेंस के तहत उपलब्ध कराया गया है. जैसा कि इस नोट में साफ जाहिर है, आप इस पन्ने को लाइसेंस के तहत दी गई शर्तों के मुताबिक संशोधित और कॉपी कर सकते हैं.