باش سیڈ کی مثالیں۔

Bash Sed Examples



باش آپ کو متغیر توسیع جیسے ($ {var/pattern/متبادل}) کا استعمال کرتے ہوئے پیٹرن تبدیل کرنے کی اجازت دیتا ہے۔ اور اسی طرح ، sed اس طرح کرتا ہے (sed -e ‘s/pattern/متبادل/’)۔ تاہم ، ٹیکسٹ فائلوں میں پیٹرن کو تبدیل کرنے کے مقابلے میں زیادہ سیڈ ہے۔ یہاں ہم سیڈ کو دوبارہ دریافت کریں گے ، مثال کے طور پر ، روزانہ کے کاموں میں مدد کے لیے مساوی احکامات اور ورک فلو کے ساتھ۔

sed مثالوں کے لیے سیٹ اپ۔

مثال کے لیے سیٹ اپ کرنے کے لیے یہاں ایک فوری گائیڈ ہے ، جسے میں زیادہ اوور کِل نہ کرنے کی کوشش کروں گا۔







الفاظایک ٹیکسٹ فائل ہے جس میں 1 سے 100 تک کی تعداد ہوتی ہے۔ آپ کبھی نہیں جانتے کہ یہ آپ کے اگلے شیل اسکرپٹنگ انٹرویو میں ہوسکتا ہے۔



بارایک ٹیکسٹ فائل ہے جس میں ایک لائن ہے -



پرانا پی ایچ پیایک ٹیکسٹ فائل ہے جس میں پرانے پی ایچ پی کی لائنیں ہیں جو پی ایچ پی 7 یا بعد میں ٹوٹ جائیں گی۔ (اشارہ: ereg)





نوٹ کریں کہ اوپر بیان کردہ تمام افعال نیچے سیٹ نوٹ کے افعال پر Endnote میں مل سکتے ہیں۔

مساوی احکامات کے ساتھ مثالیں دیں۔

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



1. ایک بے ترتیب لائن پرنٹ کریں (ترتیب -R -| سر -1 کے برابر)

sed '$ ((رینڈم٪ 100)) پی '-

2. فائل میں آخری لائن پرنٹ کریں (سر -1 کے برابر)

sed '$ p'-

3. فائل میں پہلی 10 لائنیں پرنٹ کریں (سر -n 10 کے برابر)

sed '10 کیو'-

4. فائل میں پہلی لائن پرنٹ کریں (دم -1 کے برابر)

sed '1p'-

5. ایک حرف کی تمام مثالیں حذف کریں (tr –delete '0' کے برابر -، جہاں 0 وہ حرف ہے جسے ہم حذف کرنا چاہتے ہیں)

sed -اور s / 0 // g '-

6. csv فائل کو tsv میں تبدیل کریں (tr '،' ' t' -کے برابر)

sed -اور 's/،/ t/g'-

7. فائل میں لائن شامل کریں (بلی بار کے برابر -)

sed '$ a ---'-

8. فائل کو لائن میں پیش کریں (بلی - بار کے برابر)

sed '1i ---'-

9. فائل میں تمام لائنیں پرنٹ کریں (بلی کے برابر)

sed -اور 'پی'-

10. ایک پیٹرن سے ملنے والی لائنیں پرنٹ کریں (grep -e ‘^1’ -کے برابر)

sed -اور '/^1/ پی'-

11. ایک پیٹرن سے مماثل لائنیں حذف کریں (grep -v -e ‘^1’ -کے برابر)

sed -اور '/^1/ d'-

12. فائل میں لائنوں کی تعداد حاصل کریں (wc -l کے برابر)

sed -اور '$ ='-

13. پس منظر میں ایک فائل پر لکھیں (مساوی کمانڈ ٹی)

sed 'میں$ {1}'-

ٹی کمانڈ کو نافذ کرنے کے لیے sed استعمال کرنے کی مثال۔

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

احکامات

ٹی ()
{
پرکھ $ {#} -ایک || واپسی؛
sed 'میں$ {1}'-
}
مرکزی()
ٹییہ؛
کیٹیہ

مرکزی

آؤٹ پٹ۔










10۔









10۔

یہاں آپ کو 1 سے 10 تک عدد کی دو فہرستیں نظر آئیں گی۔ پہلا seq کمانڈ سے ہے۔ دوسرا ہمیں ٹی میں لکھی فائل کی بلی سے ملتا ہے۔ میں جانتا ہوں کہ یہ مضحکہ خیز ہے لیکن یہ کام کرتا ہے!

ایک فائل میں بے ترتیب لکیر کو پرنٹ کرنے کے لیے sed استعمال کرنے کی مثال۔

فرض کریں کہ ہم bash اور تھوڑا سا sed استعمال کرتے ہوئے فائل میں بے ترتیب لائن پرنٹ کرنا چاہتے ہیں۔ کیا ہم یہ کر سکتے ہیں؟ ہاں ہم کر سکتے ہیں! یہاں کیسے ہے۔

ایک فنکشن کو نافذ کریں جو

  1. ایک فائل میں لائنوں کی تعداد حاصل کرتا ہے ، ایل۔
  2. 1 اور L ، R کے درمیان بے ترتیب نمبر پیدا کرتا ہے۔
  3. پرنٹ آر۔

فنکشن توقع کرتا ہے کہ ان پٹ کو باہر سے پائپ کیا جائے گا۔

احکامات

کچھ لائن()
{
فنکشنlc()
{
sed -اور '$ ='-
}؛
فنکشنپرنٹ لائن()
{
sed -اور '$ {1}پی '-
}؛
درجہ حرارت= $۔( mktemp )؛
کیٹ-> $ {temp}؛
کیٹ $ {temp} |پرنٹ لائن $۔((رینڈم٪$( کیٹ $ {temp} |lc)+ ))؛
rm $ {temp}
}

استعمال کی مثال (1)

سیک 100۔ |_

آؤٹ پٹ (1)

35۔

استعمال کی مثال (2)

curl https://linuxhint.com/bash_cut_command/ -خاموش |پٹی ٹیگ|کچھ لائن

نیچے دی گئی مثال ملاحظہ کریں ، HTML ٹیگز اتارنے کے لیے sed کا استعمال کرتے ہوئے۔ نوٹ کریں کہ اوور مثال کبھی کبھی خالی لائنوں کے لیے خالی لوٹ آتی ہے۔ ایک مشق کے طور پر ، اسے بہتر بنایا جا سکتا ہے۔

فائل میں لائنوں کو پرنٹ کرنے کے لیے sed کا استعمال۔

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

احکامات

پرنٹ لائن()
{
sed '$ {1}پی '-
}

اب دیکھتے ہیں کہ جب ہم الفاظ پر پرنٹ لائن استعمال کرتے ہیں تو کیا ہوتا ہے۔

احکامات

الفاظ|پرنٹ لائنپچاس

آؤٹ پٹ۔

پچاس

ٹھیک ہے. اچھا لگتا ہے لیکن آئیے کچھ ایسا کرنے کی کوشش کریں جو تھوڑا کم معمولی نظر آئے۔

احکامات

اعلان -ایکس ایفالفاظ
اعلان -ایکس ایفپرنٹ لائن
سیک 10۔$(الفاظ| ڈبلیو سی - ) | xargs-میںلشکر -سی الفاظ | پرنٹ لائن {} '

آؤٹ پٹ۔


گیارہ
اکیس
31۔
41۔
51۔
61۔
71۔
81۔
91۔

ٹھیک ہے. اب یہ زیادہ پسند ہے! آپ دیکھتے ہیں کہ کسی فائل میں کسی بھی لائن کو پرنٹ آؤٹ کرنے کے لیے بیڈ سکرپٹ میں sed کا استعمال کیسے کیا جا سکتا ہے۔

مساوی احکامات کے بغیر سیڈ مثالیں۔

کمانڈ لائن ماحول میں ، بعض اوقات کم از کم مزاحمت پیدا کرنے والے حل کا راستہ سیڈ راستہ ہوتا ہے۔ بصورت دیگر ، آپ پہلی جگہ ضرورت سے زیادہ کام کرتے ہیں۔ کچھ احکامات ذیل میں نمایاں ہو سکتے ہیں۔

شیل اسکرپٹ میں تمام لائنوں کو کمانڈ کریں۔

sed -اور 's/^/#/'-
پہلی لائن حذف کریں۔
sed -اور '1 ڈی'-
حذف کریں۔آخریلائن
sed -اور '$ d'-
پیٹرن سے ملنے والی لائنوں سے پہلے ایک لائن داخل کریں۔
sed '/0 $/i ---'-
پیٹرن سے ملنے والی لائنوں کے بعد ایک لائن داخل کریں۔
sed ' / 0 $ / ---'-
html ٹیگز نکالیں۔
sed -اور 's /†*.// g'-
ایگری کو اپ گریڈ کریں۔میںچلانے کے لیے پرانا پی ایچ پی کوڈ۔میںphp7 یا بعد میں۔
sed s/ereg ( ([^،]*). ([^)]*) ./ strpos ( 2، 1)/g '
چیک کریںاگر sedایک مخصوص ورژن سے پہلے ہے۔
sed -اور 'v 4.5'-

bash میں برانڈ کی مثال sed ورژن۔

مثالوں کے اوپر ، یہ چیک کرنے کے لیے ایک لائن موجود ہے کہ آیا sed ایک مخصوص ورژن سے پہلے ہے جسے ہم بش میں ورژن برانچنگ کو نافذ کرنے کے لیے استعمال کر سکتے ہیں ، جس کے بارے میں میرا خیال ہے کہ ورژن نمبروں کا موازنہ کرنے کے لیے کسی فعل کو لاگو کرنے کی کوشش سے آسان ہے sed -version output . صرف نقصان یہ ہے کہ اگر سیڈ کا کوئی سابقہ ​​ورژن ہے جو وی کمانڈ کو سپورٹ نہیں کرتا ہے ، تو ہم مصیبت میں ہیں۔

احکامات

test-sed-version-at-most() {
باہر پھینک دیا | sed 'v$ {1}'-> /دیو/خالی
}
ورژن آزمائیں۔()
{
باہر پھینک دیا ورژن۔$ {1}. ٹھیک ہے. یہ کرو '؛
test-sed-version-at-most$ {1} && {
باہر پھینک دیا 'پرانا'؛
سچ
} || {
باہر پھینک دیا 'نئی'
}؛
باہر پھینک دیا 'راستہ.'
}
مرکزی()
{
مقامی
کے لیےvمیں .{،}؛
کیا
ورژن آزمائیں۔$ {v}؛
ہو گیا
}
مرکزی

آؤٹ پٹ۔

ورژن4.4۔. ٹھیک ہے. پرانے طریقے سے کرو۔
ورژن4.5۔. ٹھیک ہے. اسے نئے طریقے سے کریں۔

نوٹ کریں کہ ان مشینوں کو ٹائپ کرنے کے لیے میری مشین پر سیڈ کا ورژن 4.4 ہے ، جو کہ اوپر آؤٹ پٹ کی وضاحت کرے گا۔ نیز ، اسی وقت ، gnu sed کا تازہ ترین ورژن 4.7 تھا ، جو میرے پاس سے 3 سال پرانا ہے۔ میری سیڈ پرانی ہے! درحقیقت ، sed 4.0.6 میں ، ایک پیرامیٹر ورژن کمانڈ میں شامل کیا گیا تھا لہذا یہ حکمت عملی کسی بھی کم از کم v4.0.6 کے لیے کام کرتی ہے ، جو کہ اس ورژن کو 2003 کے اوائل میں جاری کیا گیا تھا اس پر نرمی ہے۔ آپ اچھے ہیں۔

میں نے کچھ اضافی کھدائی کی ، اصل میں خبریں تازہ ترین سورس کوڈ سے باہر پڑھ رہی ہیں۔ ورژن 4.6 میں ایک نئی خصوصیت ہے ، b ڈیبگ جو اسکرپٹ کو پھینک دیتا ہے اور آؤٹ پٹ لائنوں کی تشریح کرتا ہے۔ یہ آپ کو بیش میں افعال کے ذریعہ تیار کردہ سیڈ اسکرپٹس کو کیننیکل شکل میں ترجمہ کرنے کی اجازت دے گا۔ ٹھنڈا! بس یہ مت بھولنا کہ آپ کو بش میں سیڈ ورژن برانچنگ کی ضرورت ہے۔ یہیں سے یہ سیڈ مثال چلتی ہے۔

ایچ ٹی ایم ایل ٹیگز اتارنے کے لیے سیڈ کا استعمال کرتے ہوئے بش فنکشن کی مثال۔

مندرجہ بالا مثالوں میں HTML ٹیگز نکالنے کی ایک لائن ہے۔ آئیے اسے ایک باش فنکشن میں پھینک دیتے ہیں اور اس کا استعمال آخری ایچ ٹی ایم ایل ٹیگز کو نکالنے کے لیے کرتے ہیں جو میں نے لکھا تھا۔

احکامات

پٹی ٹیگ()
{
sed -اور 's /†*.// g'-
}
curl https://linuxhint.com/bash_cut_command/ -خاموش |پٹی ٹیگ

میں یہ نہیں کہہ سکتا کہ یہ کامل ہے لیکن کم از کم یہ ٹرمینل میں پڑھنے کے قابل ہے۔

ورک فلوز کے ساتھ سیڈ مثالیں: ورک فلو کی مثال: فائنڈ ، گریپ اور سیڈ کا استعمال کرتے ہوئے سب کو محفوظ طریقے سے تبدیل کریں۔

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

ورک فلو

  1. مل
  2. گرفت
  3. sed
مل

یہاں آپ ان فائلوں کو منتخب کریں گے جو متبادل سے مشروط ہیں۔ میں ان لائنوں کے ساتھ کمانڈ استعمال کرنے کا مشورہ دیتا ہوں:

مل -قسمf-نام | گرفت -v-اور| xargs-میں ...

مثال کے طور پر ، آپ گٹ ذخیرہ ڈائریکٹریوں کو چھوڑ کر پی ایچ پی فائلوں کو تبدیل کرنے کے لئے فائلوں کو محدود کرنا چاہتے ہیں۔

مل -قسمf-نام۔*.php| گرفت -v -اور '.جاؤ' | xargs -میں...

بش میں xargs کمانڈ پر مزید پڑھیں۔

گرفت

اگلا ، ہم منتخب کردہ فائلوں میں کچھ_ پیٹرن کو درج ذیل کے مطابق آزمانے اور مماثل کرنے جا رہے ہیں۔ نوٹ کریں کہ چونکہ ہم grep کے لیے -o آپشن استعمال کر رہے ہیں ، آؤٹ پٹ صرف مماثل تار دکھائے گا اگر کوئی ہو۔

مل -قسمf-نام۔*.php| گرفت -v -اور '.جاؤ' |
xargs -میں گرفت -اورکچھ_ پیٹرنیا

مندرجہ بالا کمانڈ کو سٹرنگ کی ایک فہرست واپس آنی چاہیے جو some_pattern سے مماثل ہے۔

sed

آخر میں ، ہم some_pattern سے مماثل تمام سٹرنگ کو تبدیل کرنا چاہتے ہیں۔ ایسا کرنے کے لیے ہمیں grep کو sed میں تبدیل کرنے کی ضرورت ہے۔

مل -قسمf-نام۔*.php| گرفت -v -اور '.جاؤ' |
xargs -میں sed -میں -اورs/کچھ_ پیٹرن/متبادل/g

گریپ کمانڈ sed -i بن جاتا ہے اور -o آپشن ہٹا دیا جاتا ہے۔ اور وہاں آپ کے پاس ہے۔

اب آپ چیک کر سکتے ہیں کہ اپنی قسمت کو جانچنے کے بجائے سیڈ میں کن ڈوروں کو تبدیل کیا جا رہا ہے۔

مثالوں میں استعمال ہونے والے اختیارات پر اختتامی نوٹ۔

یہاں سیڈ مثالوں میں مختصرا discussed زیر بحث اختیارات کی فہرست ہے۔

اختیار تفصیل
-میں جگہ میں ترمیم کریں۔ اگر ان پٹ ایک فائل ہے (پائپ نہیں ہے) تاثرات کا نتیجہ فائل کے مندرجات کو اوور رائٹ کر دے گا۔

سیڈ ایک کو قبول کرتا ہے۔

مثال کے طور پر sed -n…

-اور -اظہار کے لیے کھڑا ہے۔ اس کا پیرامیٹر sed زبان میں ایک اظہار ہے۔

سیڈ بہت سے لوگوں کو قبول کرتا ہے۔

مثال کے طور پر sed -e'expr1 '-e'expr2'

لائن چھپ جاتی ہے جو اظہار سے متاثر نہیں ہوتی۔ یہ ہے کہ اگر اظہار sed زبان میں ایک پرنٹ بیان ہے ، تو پرنٹ بیان میں شامل لائنیں آؤٹ پٹ میں شامل نہیں ہوں گی۔

مثال کے طور پر sed -n…

دستیاب سیڈ آپشنز کے بارے میں مزید معلومات کے لیے ، sed –help دیکھیں۔

مساوی احکامات پر اختتامی نوٹ مثالوں میں استعمال ہوتے ہیں۔

مندرجہ ذیل کمانڈ لائن افادیتیں سیڈ مثالوں میں مساوی احکامات کے ساتھ شامل ہیں۔

  • ترتیب دیں
  • سر
  • دم
  • گرفت
  • کیٹ
  • این ایس
  • ٹی

پچھلے حصے پر نوٹ کریں - مثال کے طور پر مساوی احکامات۔

اگر آپ سوچ رہے ہیں کہ مثال میں کردار - کردار کیا ہو رہا ہے تو یہ نوٹ آپ کے لیے ہے۔ میں نے مثالوں میں زیادہ تر احکامات کے بعد ایک کردار شامل کیا تاکہ اشارہ کیا جا سکے کہ ہم پائپ کے ذریعے ان پٹ وصول کرنے کی توقع کرتے ہیں۔ یہ ہے کہ،

کیٹکچھ فائل| ترتیب دیں -آر-| سر -1۔

تاہم ، جب بائیں ہاتھ پر پائپ موجود ہے ، ہم اشارہ کو مندرجہ ذیل کے طور پر چھوڑ سکتے ہیں۔

کیٹکچھ فائل| ترتیب دیں -آر | سر -1۔

مثالوں میں احکامات کے بعد - کردار کے ساتھ یہی ہو رہا تھا۔

سیٹ اپ کے افعال پر نوٹ۔

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

احکامات

الفاظ()
{
سیک 100۔
}
بار()
{
باہر پھینک دیا ---
}
پرانا پی ایچ پی()
{
باہر پھینک دیا 'ereg ($ UA ،' Bottybot ')'
}

نیچے کی لکیر۔

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