Sed نیو لائن کو اسپیس سے بدل دیں۔

Sed Nyw Layn Kw Aspys S Bdl Dy



UNIX/Linux میں، sed کمانڈ اسٹریمز میں ترمیم کرنے کے لیے ایک وقف شدہ ٹول ہے۔ یہ ٹیکسٹ اسٹریم پر مختلف کارروائیاں انجام دے سکتا ہے، جیسے تلاش کرنا، تلاش کرنا اور تبدیل کرنا، اور اندراج/حذف کرنا۔ تاہم، زیادہ تر حصے کے لیے، sed کا استعمال متن کے مواد کو تلاش کرنے اور تبدیل کرنے کے لیے کیا جاتا ہے۔

اس گائیڈ میں، ہم sed کا استعمال کرتے ہوئے نئی لائنوں کو جگہ کے ساتھ تبدیل کرنے کا مظاہرہ کریں گے۔

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

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







$sed -e 's///'

درج ذیل کمانڈ پر ایک نظر ڈالیں:



$ echo 'کوئیک براؤن فاکس' | sed -e 's/quick/fast/g'



echo کمانڈ سٹرنگ کو پرنٹ کرتی ہے۔ STDOUT . اس کے بعد STDOUT سلسلہ ہے۔ پائپ sed کرنے کے لئے. ہم نے sed کو ہدایت کی ہے کہ کسی بھی مثال کو جلدی سے بدل دیا جائے۔ آخر میں، آؤٹ پٹ اسکرین پر پرنٹ کیا جاتا ہے.





نیو لائنز کو جگہ سے بدلنا

مظاہرے کے لیے، میں نے درج ذیل ٹیکسٹ فائل test.txt کئی ڈمی مواد کے ساتھ بنائی ہے۔

$ cat test.txt



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

$sed -e 's/\n/ /g' test.txt

تاہم، اس نے توقع کے مطابق کام نہیں کیا۔ اس مقصد کو حاصل کرنے کے لیے، ہمیں کچھ اضافی اختیارات کی ضرورت ہے۔ درج ذیل کمانڈ پر ایک نظر ڈالیں:

$sed -e ':a;N;$!ba;s/\n/ /g' test.txt

sed کمانڈ کے متعدد حصے ہیں۔ ہر ایک مخصوص کام کی نشاندہی کرتا ہے:

  • :a: ایک لیبل 'a' بناتا ہے
  • N: اگلی لائن کو پیٹرن کی جگہ میں شامل کرتا ہے۔
  • $!ba: اگر آخری لائن نہیں، تو 'a' لیبل پر واپس آجاتی ہے۔
  • s/\n/ /g: تلاش کرتا ہے اور نئی لائن (\n) کو اسپیس (/ /) سے تبدیل کرتا ہے۔ پیٹرن عالمی سطح پر مماثل ہے (/g)

sed کمانڈ قدموں سے گزرتی ہے یہاں تک کہ یہ آخری لائن تک پہنچ جاتی ہے، تمام \n حروف کو جگہ کے ساتھ بدل کر۔

اس پیچیدہ کمانڈ کے بجائے، ہم -z فلیگ کا استعمال کرکے چیزوں کو آسان بنا سکتے ہیں جو کہ sed کو null سے الگ کیے گئے ریکارڈز کے ساتھ کام کرنے کے لیے بتاتا ہے۔ کمانڈ اس طرح نظر آئے گا:

$sed -z -e 's/\n/ /g' test.txt

متبادل طریقے

اگرچہ sed کام ٹھیک ٹھیک کر سکتا ہے، کچھ متبادل ٹولز موجود ہیں۔ اس حصے میں، ہم مختصراً ان میں سے چند ایک کا جائزہ لیں گے۔

درج ذیل مثال کے لیے، ہم tr کمانڈ کو ایک سادہ انداز میں وائٹ اسپیس کے ساتھ نیو لائن کو تبدیل کرنے کے لیے استعمال کر سکتے ہیں۔

$ tr '\n' ' ' < test.txt

ہم کام کرنے کے لیے پرل کا بھی استعمال کر سکتے ہیں۔ مندرجہ ذیل نحو بھی اسی طرح کی ہے جو ہم نے sed کے ساتھ استعمال کیا ہے (لیکن آسان):

$ perl -p -e 's/\n/ /' test.txt

نئی لائنوں کو وائٹ اسپیس سے تبدیل کرنے کا دوسرا طریقہ پیسٹ کمانڈ کا استعمال کرنا ہے۔ نوٹ کریں کہ یہ صرف ایک حرف کو ہٹا سکتا ہے:

$paste -s -d ' test.txt

sed کی طرح، لینکس ایک اور ٹول awk کے ساتھ آتا ہے۔ sed کی طرح، یہ ان پٹ پر کچھ جدید تبدیلیاں بھی انجام دے سکتا ہے۔ ہمارے مقصد کے لیے درج ذیل awk کمانڈ استعمال کریں:

$awk 1 ORS=' test.txt

نتیجہ

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

پیچیدہ کمانڈز استعمال کرنے کے بجائے جنہیں یاد کرنا مشکل ہے، ہم لینکس میں بہت سی چیزوں کو انجام دینے کے لیے باش اسکرپٹنگ کا استعمال کرتے ہیں۔ اگرچہ یہ کچھ کارکردگی کی قیمت پر آتا ہے، لچک اور استعمال کے قابل ہے. متعلق مزید پڑھئے ابتدائیوں کے لیے باش اسکرپٹنگ .