انڈروئد

باش میں لائن کے ذریعہ فائل لائن کو کیسے پڑھیں

بنتنا يا بنتنا

بنتنا يا بنتنا

فہرست کا خانہ:

Anonim

باش اسکرپٹ لکھتے وقت ، آپ کبھی کبھی اپنے آپ کو ایسے حالات میں پائیں گے جہاں آپ کو ایک لائن لائن کے ذریعہ فائل لائن پڑھنے کی ضرورت ہوگی۔ مثال کے طور پر ، آپ کے پاس ڈیٹا پر مشتمل ایک ٹیکسٹ فائل ہوسکتی ہے جس پر اسکرپٹ کے ذریعہ کارروائی ہونی چاہئے۔

اس ٹیوٹوریل میں ، ہم اس بات پر تبادلہ خیال کریں گے کہ کس طرح باش میں فائل لائن لائن فائل پڑھیں۔

لائن نائنٹیکس کے ذریعہ فائل لائن پڑھنا

ایک لائن لائن بہ فائل پڑھنے کا عمومی عام نحو درج ذیل ہے۔

while IFS= read -r line do echo "$line" done < input_file

یا مساوی واحد لائن ورژن:

while IFS= read -r line; do echo $line; done < input_file

یہ کیسے کام کرتا ہے؟

ان پٹ فائل ( input_file فائل) اس فائل کا نام ہے جسے آپ read کمانڈ کے ذریعہ پڑھنے کے لئے کھلا رکھنا چاہتے ہیں۔ read کمانڈ فائل لائن کو لائن کے ذریعہ پڑھتا ہے ، ہر لائن کو line متغیر کو تفویض کرتا ہے۔ ایک بار جب تمام لائنوں پر کارروائی ہوجائے گی جبکہ لوپ ختم ہوجائے گا۔ اندرونی فیلڈ جداکار ( IFS ) معروف اور ٹریلنگ وہائٹ ​​اسپیس کو بچانے کے لئے کالے تار پر سیٹ کیا گیا ہے جو read کمانڈ کا ڈیفالٹ سلوک ہے۔

لائن مثال کے طور پر فائل لائن پڑھنا

آئیے مندرجہ ذیل مثال پر ایک نظر ڈالیں۔ فرض کریں ، ہمارے پاس distros.txt نامی ایک فائل موجود ہے جس میں کچھ مشہور لینکس تقسیم اور ان کے پیکیج مینیجرز کوما ( , ) سے الگ ہو چکے ہیں کی ایک فہرست پر مشتمل ہے۔

distros.txt

Ubuntu, apt Debian, apt CentOS, yum Arch Linux, pacman Fedora, dnf

فائل لائن کو ایک لائن سے پڑھنے کے ل you آپ اپنے ٹرمینل میں درج ذیل کوڈ کو چلائیں گے۔

while IFS= read -r line do echo "$line" done < distros.txt

کوڈ فائل کو لائن کے ذریعہ پڑھے گا ، ہر لائن کو متغیر کے لئے تفویض کرے گا ، اور متغیر کی بازگشت کرے گا۔ بنیادی بات آپ کو وہی آؤٹ پٹ دیکھے گی جیسے آپ بلی کمانڈ کا استعمال کرتے ہوئے فائل کے مواد کو ظاہر کریں گے۔

اگر آپ صرف وہی تقسیم تقسیم کرنا چاہتے ہیں جو آپ استعمال کریں؟ ایک طریقہ یہ ہو گا کہ اگر بیان کا استعمال کریں اور جانچ کریں کہ آیا اس لائن میں اپٹ سٹرنگ موجود ہے:

while IFS= read -r line do if]; then echo "$line" fi done < distros.txt

Ubuntu, apt Debian, apt

لائن لائن کے ذریعہ فائل لائن پڑھتے وقت ، آپ ریڈ کمانڈ میں ایک سے زیادہ متغیرات بھی منتقل کرسکتے ہیں جو لائن کو IF پر مبنی کھیتوں میں تقسیم کردے گی۔ پہلے فیلڈ کو پہلے متغیر ، دوسرا دوسرے متغیر کو تفویض کیا جاتا ہے ، وغیرہ۔ اگر متغیر سے زیادہ فیلڈز موجود ہیں تو ، باقی فیلڈز آخری متغیر کے لئے تفویض کردیئے گئے ہیں۔

مندرجہ ذیل مثال میں ، ہم کوما (I) پر آئی ایف ایس مرتب کررہے ہیں اور دو متغیرات کو distro اور pm کو ریڈ کمانڈ پر منتقل کررہے ہیں۔ لائن کے آغاز سے لے کر پہلے کوما تک سب کچھ پہلے متغیر ( distro ) کو تفویض کیا جائے گا اور باقی لائن کو دوسرے متغیر ( pm ) میں تفویض کیا جائے گا:

while IFS=, read -r distro pm do echo "$pm" is the package manager for "$distro" done < distros.txt

apt is the package manager for Ubuntu apt is the package manager for Debian yum is the package manager for CentOS pacman is the package manager for Arch Linux dnf is the package manager for Fedora

متبادل فائل پڑھنے کے طریقے

پروسیس متبادل کے استعمال

عمل متبادل آپ کو فائل نام کے طور پر کمانڈ سے آؤٹ پٹ منتقل کرنے کی اجازت دیتا ہے:

while IFS= read -r line do echo "$line" done < <(cat input_file)

یہاں ایک سٹرنگ کا استعمال

یہاں سٹرنگ یہاں دستاویز کا ایک مختلف شکل ہے۔ تار (cat input_file) نئی لائنوں کو برقرار رکھے گی:

while IFS= read -r line do echo "$line" done <<< $(cat input_file)

فائل ڈسریکٹر کا استعمال کرتے ہوئے

آپ فائل ڈسریکٹر کا استعمال کرکے لوپ میں ان پٹ بھی فراہم کرسکتے ہیں:

while IFS= read -r -u9 line do echo "$line" done 9< input_file

فائل ڈسکریپٹروں کے ساتھ کام کرتے وقت شیل اندرونی فائل ڈسکریپٹروں کے ساتھ تنازعہ سے بچنے کے ل 4 4 اور 9 کے درمیان نمبر استعمال کریں۔

نتیجہ اخذ کرنا

باش میں ، ہم فائل پڑھنے والے لوپ کو ایک ان پٹ کے بطور فائل نام فراہم کرکے ایک لائن لائن بہ فائل پڑھ سکتے ہیں۔

بش ٹرمینل