AWK کمانڈس اور سکرپٹ کیسے لکھیں

حکم، نحو، اور مثالیں

آرک کمانڈ ٹیکسٹ فائلوں کو پروسیسنگ یا تجزیہ کرنے کے لئے ایک طاقتور طریقہ ہے- خاص طور پر، ڈیٹا فائلیں جو لائنز (صفوں) اور کالموں کے ذریعہ منظم کیے جاتے ہیں.

سادہ آک حکموں کو کمانڈ لائن سے چلایا جا سکتا ہے. زیادہ پیچیدہ کاموں کو ایک فائل میں آبی پروگراموں (نام نہاد آک سکرپٹ) کے طور پر لکھا جانا چاہئے.

ایک آرک کمانڈ کی بنیادی شکل اس طرح لگتی ہے:

آک 'پیٹرن {کارروائی}' ان پٹ فائل> آؤٹ پٹ فائل

اس کا مطلب ہے: ان پٹ فائل کی ہر لائن لے لو؛ اگر لائن پر پیٹرن پر مشتمل ہوتا ہے تو اس لائن کو کارروائی کریں اور نتیجے کی لائن آؤٹ پٹ فائل پر لکھیں. اگر پیٹ کو اتار دیا جاتا ہے، تو عمل تمام لائن پر لاگو ہوتا ہے. مثال کے طور پر:

awk '{$ $ 5}' table1.txt> output1.txt

یہ بیان ہر سطر کے 5th کالم کے عنصر کو لیتا ہے اور آؤٹ پٹ فائل "output.txt" میں لکھا ہے. متغیر '$ 4' دوسرے کالم سے مراد ہے. اسی طرح آپ پہلے، دوسری، اور تیسرے کالم تک رسائی حاصل کر سکتے ہیں، $ 1، $ 2، $ 3، وغیرہ وغیرہ کے ساتھ. ڈیفالٹ کالم کے ذریعہ جگہوں یا ٹیبز (نام نہاد سفید جگہ) کی طرف سے الگ کیا جاتا ہے. لہذا، اگر ان پٹ فائل "table1.txt" میں ان لائنوں پر مشتمل ہے:

1، جسٹن ٹیمبرکل، عنوان 545، قیمت $ 7.30 2، ٹیلر سوئفٹ، عنوان 723، قیمت $ 7.90 3، مک جیجر، عنوان 610، قیمت $ 7.90 4، لیڈی گیگا، عنوان 118، قیمت $ 7.30 5، جانی کیش، عنوان 482، قیمت $ 6.50 6، ایلیس پریسلی، عنوان 335، قیمت $ 7.30 7، جان لینن، عنوان 271، قیمت $ 7.90 8، مائیکل جیکسن، عنوان 373، قیمت $ 5.50

پھر کمانڈ آؤٹ پٹ فائل "output1.txt" میں درج ذیل لائنیں لکھیں گے:

545، 723، 610، 118، 482، 335، 271، 373،

اگر کالم علیحدگی خالی جگہوں یا ٹیبز کے مقابلے میں کچھ ہے، جیسے ایک کوما، آپ اس طرح بیان کرتے ہیں کہ وہ مندرجہ ذیل بیان میں ہیں:

awk-f، '{$ 3 $ print}' table1.txt> output1.txt

یہ ہر سطر کے کالم 3 سے عنصر کا انتخاب کرے گا اگر کالمز ایک کوما کی طرف سے الگ سمجھا جاتا ہے. لہذا اس صورت میں، اس صورت میں، ہو گا:

عنوان 545 عنوان 723 عنوان 610 عنوان 118 عنوان 482 عنوان 335 عنوان 271 عنوان 373

دوری بریکٹ کے اندر بیانات کی فہرست ('{'، '}') کو ایک بلاک کہا جاتا ہے. اگر آپ کسی بلاک کے سامنے شرطی اظہار پیش کرتے ہیں تو، بلاک کے اندر بیان صرف اس صورت میں مرتب کیا جائے گا جب شرط صحیح ہے.

'$ 7 == "\ $ 7.30" {$ 3} پرنٹ' ٹیبل 1.txt

اس صورت میں، شرط $ 7 == "\ $ 7.30" ہے، جس کا مطلب یہ ہے کہ کالم 7 میں عنصر $ 7.30 کے برابر ہے. ڈالر کے نشان کے سامنے بیک اپلیش استعمال کرنے کے لئے استعمال کیا جاتا ہے کہ اس نظام کو $ 7 کی متغیر کے طور پر تفسیر کرنے سے روکنے کے بجائے لفظی علامت کو لفظی طور پر لے جا سکے.

لہذا یہ خوفناک بیان ہر سطر کے تیسرے کالم میں عنصر کو پرنٹ کرتا ہے جس میں 7 "کالم 7،30 $" ہے.

آپ شرط کے طور پر باقاعدگی سے اظہار استعمال بھی کر سکتے ہیں. مثال کے طور پر:

awk '/ 30 / {print $ 3}' table1.txt

دو سلیشوں کے درمیان تار ('/') باقاعدہ اظہار ہے. اس صورت میں، یہ صرف تار ہے "30." اس کا مطلب یہ ہے کہ اگر لائن "30" تار پر مشتمل ہے، تو اس نظام کے تیسرے کالم میں نظام عنصر کو پرنٹ کرتا ہے. مندرجہ ذیل مثال میں پیداوار ہو گا:

ٹمبرلاک، گاگا، پریسلے،

اگر ٹیبل کے عنصر ہیں تو اس مثال کے طور پر اعداد و شمار ان پر حساب چلاتے ہیں.

آک '{پرنٹ ($ 2 * $ 3) + $ 7}'

موجودہ قطار ($ 1، $ 2، وغیرہ) کے حصول کے متغیروں کے علاوہ متغیر $ 0 ہے جس میں مکمل قطار (لائن) اور متغیر این ایف سے تعلق رکھتا ہے جس میں شعبوں کی تعداد ہوتی ہے.

آپ اس مثال کے طور پر نئے متغیر کی وضاحت بھی کر سکتے ہیں:

awk '{sum = 0؛ کے لئے (col = 1؛ col <= NF؛ col ++) sum + = $ col؛ پرنٹ رقم؛ } '

یہ ہر قطار کے تمام عناصر کی رقم کا حساب کرتا ہے اور پرنٹ کرتا ہے.

بیخ بیانات اکثر سل حکموں کے ساتھ مشترکہ ہوتے ہیں.