باش میں ڈلیمیٹر پر سٹرنگ کو تقسیم کرنا

باش میں ڈلیمیٹر پر سٹرنگ کو تقسیم کرنا
باش میں ڈلیمیٹر پر سٹرنگ کو تقسیم کرنا

باش میں سٹرنگ ہیرا پھیری کو توڑنا

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

ہم حل تلاش کریں گے جیسے `tr` کمانڈ استعمال کرنا اور اندرونی فیلڈ سیپریٹر (IFS) کو جوڑنا۔ آخر تک، آپ سٹرنگ اسپلٹنگ کو مؤثر طریقے سے سنبھال سکیں گے اور IFS کو اس کی ڈیفالٹ ویلیو پر دوبارہ ترتیب دے سکیں گے۔ آئیے اس میں غوطہ لگائیں اور آپ کے باش اسکرپٹنگ کے کاموں کو آسان بنائیں!

کمانڈ تفصیل
tr حروف کا ترجمہ یا حذف کرتا ہے۔ سٹرنگ کو تقسیم کرنے کے لیے سیمی کالون کو ایک نئی لائن کریکٹر سے تبدیل کرنے کے لیے یہاں استعمال کیا جاتا ہے۔
IFS انٹرنل فیلڈ سیپریٹر، باش اسکرپٹس میں مخصوص ڈیلیمیٹر کی بنیاد پر تاروں کو تقسیم کرنے کے لیے استعمال کیا جاتا ہے۔
read -r -a ان پٹ کی ایک لائن پڑھتا ہے اور اسے ایک صف میں تقسیم کرتا ہے۔ -r آپشن بیک سلیش کو فرار ہونے والے کرداروں سے تعبیر کرنے سے روکتا ہے۔
echo معیاری آؤٹ پٹ پر متن پرنٹ کرتا ہے۔ اسپلٹ سٹرنگ عناصر کو ظاہر کرنے کے لیے استعمال کیا جاتا ہے۔
split ایک پرل فنکشن جو ایک سٹرنگ کو مخصوص ڈیلیمیٹر کی بنیاد پر سٹرنگ کی فہرست میں تقسیم کرتا ہے۔
foreach ایک پرل لوپ ڈھانچہ جو قدروں کی فہرست پر اعادہ کرتا ہے۔

باش سٹرنگ تقسیم کرنے کی تکنیکوں کو سمجھنا

پہلی باش اسکرپٹ یہ ظاہر کرتی ہے کہ اسٹرنگ کو کس طرح تقسیم کیا جائے۔ tr کمانڈ۔ یہاں، ہم ایک تار کی وضاحت کرتے ہیں۔ IN="bla@some.com;john@home.com" اور استعمال کریں echo اس کے ساتھ tr سیمیکولن ڈیلیمیٹر کو ایک نئی لائن کریکٹر میں ترجمہ کرنے کے لیے۔ یہ مؤثر طریقے سے تار کو انفرادی لائنوں میں توڑ دیتا ہے۔ دی for لوپ پھر ہر لائن پر اعادہ کرتا ہے، پتوں کو مربع بریکٹ میں پرنٹ کرتا ہے۔ یہ طریقہ سیدھا ہے اور تاروں کو جوڑنے کے لیے یونکس کمانڈز کی طاقتور ٹیکسٹ پروسیسنگ صلاحیتوں کا فائدہ اٹھاتا ہے۔

ایک اور طریقہ میں ایڈجسٹ کرنا شامل ہے۔ Internal Field Separator (IFS). عارضی طور پر ترتیب دے کر IFS سیمی کالون میں، ہم سٹرنگ کو ایک صف میں تقسیم کر سکتے ہیں۔ ہم اصل کو محفوظ کرتے ہیں۔ IFS کو OIFS اس میں ترمیم کرنے سے پہلے، یہ یقینی بناتے ہوئے کہ ہم اسے بعد میں بحال کر سکتے ہیں۔ دی read -r -a کمانڈ ان پٹ سٹرنگ کو ایک صف میں پڑھتی ہے جسے کہتے ہیں۔ mails2ترمیم شدہ کی بنیاد پر اسے تقسیم کرنا IFS. پروسیسنگ کے بعد، اصل IFS بحال کیا جاتا ہے. یہ نقطہ نظر باش میں سٹرنگ اسپلٹنگ کو ہینڈل کرنے کا ایک زیادہ پروگرامی طریقہ فراہم کرتا ہے، جس سے ہمیں مزید ہیرا پھیری کے لیے صفوں کو استعمال کرنے کی اجازت ملتی ہے۔

ڈلیمیٹر پر سٹرنگز کو تقسیم کرنے کے لیے باش کا استعمال

باش اسکرپٹ

#!/usr/bin/env bash
# Input string
IN="bla@some.com;john@home.com"
# Split string using 'tr' and iterate
mails=$(echo $IN | tr ";" "\n")
for addr in $mails; do
  echo "> [$addr]"
done

# Output:
# > [bla@some.com]
# > [john@home.com]

IFS کا استعمال کرتے ہوئے Bash میں سٹرنگ کو تقسیم کرنا

باش اسکرپٹ

#!/usr/bin/env bash
# Input string
IN="bla@some.com;john@home.com"
# Save the original IFS
OIFS=$IFS
# Set IFS to semicolon
IFS=';'
# Split string into an array
read -r -a mails2 <<< "$IN"
# Restore the original IFS
IFS=$OIFS
# Iterate over the array
for x in "${mails2[@]}"; do
  echo "> [$x]"
done

# Output:
# > [bla@some.com]
# > [john@home.com]

سٹرنگ اسپلٹنگ کے لیے ازگر کا استعمال

Python اسکرپٹ

#!/usr/bin/env python3
# Input string
IN = "bla@some.com;john@home.com"
# Split string by semicolon
mails = IN.split(';')
# Iterate and print each element
for addr in mails:
    print(f"> [{addr}]")

# Output:
# > [bla@some.com]
# > [john@home.com]

سٹرنگ کو تقسیم کرنے کے لیے پرل کا استعمال

پرل اسکرپٹ

#!/usr/bin/env perl
use strict;
use warnings;
# Input string
my $IN = "bla@some.com;john@home.com";
# Split string by semicolon
my @mails = split(';', $IN);
# Iterate and print each element
foreach my $addr (@mails) {
    print "> [$addr]\n";
}

# Output:
# > [bla@some.com]
# > [john@home.com]

باش میں اعلی درجے کی سٹرنگ اسپلٹنگ تکنیک

باش میں تاروں کو تقسیم کرنے کا ایک اور طاقتور طریقہ استعمال کرنا شامل ہے۔ awk کمانڈ۔ awk ایک ورسٹائل کمانڈ لائن یوٹیلیٹی ہے جسے پیٹرن اسکیننگ اور پروسیسنگ کے لیے ڈیزائن کیا گیا ہے۔ یہ تاروں کو تقسیم کرنے کے لیے خاص طور پر مفید ہو سکتا ہے کیونکہ یہ ہمیں اپنی مرضی کے مطابق فیلڈ الگ کرنے والوں کی وضاحت کرنے کی اجازت دیتا ہے۔ مثال کے طور پر، ہم استعمال کر سکتے ہیں awk -F";" '{print $1, $2}' سیمکولن ڈیلیمیٹر کی بنیاد پر سٹرنگ کو تقسیم کرنا اور انفرادی اجزاء کو پرنٹ کرنا۔ یہ طریقہ انتہائی لچکدار ہے اور زیادہ پیچیدہ سٹرنگ ہیرا پھیری کے کاموں کو سنبھال سکتا ہے، جس سے یہ Bash پروگرامر کی ٹول کٹ میں ایک قیمتی ٹول بن جاتا ہے۔

مزید برآں، cut کمانڈ کو حد بندیوں کی بنیاد پر تاروں کو تقسیم کرنے کے لیے استعمال کیا جا سکتا ہے۔ دی cut کمانڈ عام طور پر ان پٹ ڈیٹا کی ہر لائن سے سیکشن نکالنے کے لیے استعمال ہوتی ہے۔ کے ساتھ ایک حد بندی کی وضاحت کرکے -d آپشن اور کے ساتھ فیلڈز کو منتخب کرنا -f آپشن، ہم مؤثر طریقے سے سٹرنگ کے حصوں کو تقسیم اور نکال سکتے ہیں۔ مثال کے طور پر، استعمال کرتے ہوئے echo $IN | cut -d';' -f1 ان پٹ سٹرنگ سے پہلا ای میل پتہ نکالے گا۔ یہ جدید طریقے باش میں سٹرنگ ہیرا پھیری کے کاموں کے لیے زیادہ کنٹرول اور درستگی فراہم کرتے ہیں۔

باش میں سٹرنگ اسپلٹنگ کے بارے میں عام سوالات اور جوابات

  1. میں باش میں ڈلیمیٹر پر سٹرنگ کو کیسے تقسیم کروں؟
  2. آپ استعمال کر سکتے ہیں۔ IFS متغیر یا کمانڈ جیسے tr، awk، اور cut ڈلی میٹر پر تاروں کو تقسیم کرنا۔
  3. کیا ہے IFS باش میں متغیر؟
  4. دی IFS (اندرونی فیلڈ سیپریٹر) ایک خاص متغیر ہے جو ان پٹ ٹیکسٹ کو الفاظ یا ٹوکنز میں تقسیم کرنے کے لیے استعمال ہونے والے کردار (کیریکٹرز) کی وضاحت کرتا ہے۔
  5. میں کس طرح دوبارہ ترتیب دے سکتا ہوں۔ IFS اس کی ڈیفالٹ قدر میں متغیر؟
  6. اصل کو محفوظ کریں۔ IFS اسے تبدیل کرنے سے پہلے قدر کریں، اور پروسیسنگ کے بعد اسے بحال کریں: OIFS=$IFS; IFS=';'; ... ; IFS=$OIFS.
  7. کیا کرتا ہے tr سٹرنگ سپلٹنگ میں کیا کمانڈ؟
  8. دی tr کمانڈ حروف کا ترجمہ یا حذف کرتا ہے۔ یہ کسی تار کو تقسیم کرنے کے لیے حد بندیوں کو نئی لائنوں سے بدل سکتا ہے: echo $IN | tr ";" "\n".
  9. کیا میں Bash کا استعمال کرتے ہوئے کسی تار کو ایک صف میں تقسیم کر سکتا ہوں؟
  10. جی ہاں، تبدیل کر کے IFS متغیر اور استعمال کرتے ہوئے read -r -a، آپ سٹرنگ کو ایک صف میں تقسیم کر سکتے ہیں: read -r -a array <<< "$string".
  11. کیا ہے awk کمانڈ کے لیے استعمال کیا؟
  12. awk پیٹرن اسکیننگ اور پروسیسنگ کے لیے ایک کمانڈ لائن افادیت ہے۔ یہ کسٹم فیلڈ سیپریٹرز کی وضاحت کر کے تاروں کو تقسیم کر سکتا ہے۔
  13. کیسے کرتا ہے cut کمانڈ کام؟
  14. دی cut کمانڈ ان پٹ کی ہر لائن سے حصے نکالتی ہے۔ یہ ایک حد بندی کی وضاحت کرکے اور فیلڈز کو منتخب کرکے تاروں کو تقسیم کرسکتا ہے: echo $string | cut -d';' -f1.
  15. کیوں استعمال کر رہا ہے۔ IFS تار کی تقسیم میں مددگار؟
  16. استعمال کرنا IFS آپ کو مختلف ان پٹ فارمیٹس کے لیے ورسٹائل بناتے ہوئے، تقسیم کرنے والے تاروں کے لیے حسب ضرورت حد بندیوں کی وضاحت کرنے کی اجازت دیتا ہے۔
  17. کیا باش میں ایک سٹرنگ کو متعدد حد بندیوں سے تقسیم کرنا ممکن ہے؟
  18. جی ہاں، آپ کا ایک مجموعہ استعمال کر سکتے ہیں tr اور awk متعدد حد بندیوں کو ہینڈل کرنے کے لیے۔
  19. کیا میں استعمال کر سکتا ہوں sed باش میں سٹرنگ سپلٹنگ کے لیے؟
  20. جبکہ sed بنیادی طور پر ایک سٹریم ایڈیٹر ہے، اسے دیگر کمانڈز کے ساتھ جوڑا جا سکتا ہے۔ awk تاروں کو بالواسطہ طور پر تقسیم کرنا۔

باش میں سٹرنگ اسپلٹنگ پر حتمی خیالات

باش میں سٹرنگ ہیرا پھیری میں مہارت حاصل کرنا آپ کی اسکرپٹنگ کی کارکردگی کو نمایاں طور پر بہتر بنا سکتا ہے۔ چاہے استعمال کریں۔ IFS سادہ حد بندی کرنے والے یا مزید جدید ٹولز جیسے tr اور awk، یہ تکنیک باش پروگرامنگ کے لیے ضروری ہیں۔ ہمیشہ اصل کو بحال کرنا یاد رکھیں IFS اپنے اسکرپٹ میں غیر متوقع رویے سے بچنے کے لیے۔ ان طریقوں سے، آپ اپنے Bash اسکرپٹس میں سٹرنگ پروسیسنگ کے کاموں کی ایک وسیع رینج کو سنبھال سکتے ہیں۔