20 عجیب مثالیں

20 Awk Examples



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

مشمولات:

  1. پرنٹ ایف کے ساتھ عجیب۔
  2. سفید جگہ پر ٹوٹنا
  3. حد بندی کو تبدیل کرنے کے لئے
  4. ٹیب سے محدود ڈیٹا کے ساتھ عجب۔
  5. csv ڈیٹا کے ساتھ awk۔
  6. awk regex
  7. awk کیس بے حس regex
  8. این ایف (فیلڈز کی تعداد) متغیر کے ساتھ awk۔
  9. awk gensub () فنکشن۔
  10. Rand () فنکشن کے ساتھ awk۔
  11. اوک یوزر ڈیفائنڈ فنکشن۔
  12. عجب اگر
  13. awk متغیرات
  14. عجیب صفیں
  15. اوک لوپ
  16. awk پہلا کالم چھاپنے کے لیے۔
  17. awk آخری کالم پرنٹ کرنے کے لیے۔
  18. گریپ کے ساتھ عجیب
  19. bash اسکرپٹ فائل کے ساتھ awk۔
  20. sed کے ساتھ awk

printf کے ساتھ awk کا استعمال۔

پرنٹ ایف () فنکشن زیادہ تر پروگرامنگ زبانوں میں کسی بھی آؤٹ پٹ کو فارمیٹ کرنے کے لیے استعمال ہوتا ہے۔ اس فنکشن کے ساتھ استعمال کیا جا سکتا ہے۔ عجیب مختلف قسم کے فارمیٹڈ آؤٹ پٹ تیار کرنے کا حکم۔ awk کمانڈ بنیادی طور پر کسی بھی ٹیکسٹ فائل کے لیے استعمال ہوتی ہے۔ نامی ٹیکسٹ فائل بنائیں۔ ملازم. txt ذیل میں دیے گئے مواد کے ساتھ جہاں فیلڈز ٹیب (' t') کے ذریعے الگ ہوتے ہیں۔







ملازم. txt



1001 جان سینا 40000۔
1002 جعفر اقبال 60000۔
1003 مہر نگار 30000۔
1004 جونی لیور 70000

درج ذیل awk کمانڈ سے ڈیٹا پڑھیں گے۔ ملازم. txt فائل لائن آف لائن اور فارمیٹنگ کے بعد پہلی فائل پرنٹ کریں۔ یہاں ، ٪ 10s n اس کا مطلب ہے کہ آؤٹ پٹ 10 حروف طویل ہوگی۔ اگر آؤٹ پٹ کی ویلیو 10 حروف سے کم ہے تو ویلیو کے فرنٹ پر خالی جگہیں شامل کی جائیں گی۔



$ awk'{printf'٪ 10s۔n'، $ 1}'ملازم.TXT

آؤٹ پٹ:





مواد پر جائیں۔



سفید جگہ پر ٹوٹنا

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

$باہر پھینک دیا 'مجھے پروگرامنگ پسند ہے' | عجیب '{پرنٹ $ 3}'

آؤٹ پٹ:

مواد پر جائیں۔

حد بندی کو تبدیل کرنے کے لئے

awk کمانڈ کا استعمال کسی بھی فائل کے مواد کے لیے حد بندی کو تبدیل کرنے کے لیے کیا جا سکتا ہے۔ فرض کریں ، آپ کے پاس ایک ٹیکسٹ فائل ہے جس کا نام ہے۔ phone.txt درج ذیل مواد کے ساتھ جہاں ':' فائل مواد کے فیلڈ جداکار کے طور پر استعمال ہوتا ہے۔

phone.txt

+123: 334: 889: 778۔
+880: 1855: 456: 907۔
+9: 7777: 38644: 808۔

حد بندی کو تبدیل کرنے کے لیے درج ذیل awk کمانڈ چلائیں ، ':' کی طرف سے '-' فائل کے مواد پر ، phone.txt .

$ cat phone.txt
$ awk '$ 1 = $ 1' FS = ':' OFS = '-' phone.txt

آؤٹ پٹ:

مواد پر جائیں۔

ٹیب سے محدود ڈیٹا کے ساتھ عجب۔

awk کمانڈ میں بہت سے بلٹ ان متغیرات ہیں جو متن کو مختلف طریقوں سے پڑھنے کے لیے استعمال ہوتے ہیں۔ ان میں سے دو ہیں۔ ایف ایس اور OFS . ایف ایس ان پٹ فیلڈ جداکار ہے اور OFS آؤٹ پٹ فیلڈ جداکار متغیرات ہیں۔ ان متغیرات کے استعمال اس سیکشن میں دکھائے گئے ہیں۔ بنائیے ایک ٹیب علیحدہ فائل کا نام input.txt کے استعمال کو جانچنے کے لیے درج ذیل مواد کے ساتھ۔ ایف ایس اور OFS متغیرات

Input.txt۔

کلائنٹ سائیڈ سکرپٹ لینگویج۔
سرور سائیڈ سکرپٹ کی زبان۔
ڈیٹا بیس سرور۔
ویب سرور

ٹیب کے ساتھ FS متغیر کا استعمال۔

مندرجہ ذیل کمانڈ ہر لائن کو تقسیم کرے گی۔ input.txt ٹیب پر مبنی فائل (' t') اور ہر لائن کا پہلا فیلڈ پرنٹ کریں۔

$عجیب '{پرنٹ $ 1}' ایف ایس=' t'input.txt

آؤٹ پٹ:

ٹیب کے ساتھ OFS متغیر کا استعمال۔

مندرجہ ذیل awk کمانڈ پرنٹ کرے گا۔ ویں اور ویں کے شعبوں 'Ls -l' کالم کا عنوان پرنٹ کرنے کے بعد ٹیب جداکار کے ساتھ کمانڈ آؤٹ پٹ۔ نام۔ اور سائز . یہاں ، OFS متغیر کو ٹیب کے ذریعہ آؤٹ پٹ فارمیٹ کرنے کے لیے استعمال کیا جاتا ہے۔

$ایل ایس -
$ایل ایس - | عجیب -v OFS=' t' 'BEGIN {printf'٪ s t٪ s n '،' Name '،' Size '} {print $ 9، $ 5}'

آؤٹ پٹ:

مواد پر جائیں۔

CSV ڈیٹا کے ساتھ عجب۔

کسی بھی CSV فائل کے مواد کو awk کمانڈ کے ذریعے متعدد طریقوں سے تجزیہ کیا جا سکتا ہے۔ کے نام سے ایک CSV فائل بنائیں کسٹمر. csv 'awk کمانڈ لگانے کے لیے درج ذیل مواد کے ساتھ۔

customerr.txt

شناخت ، نام ، ای میل ، فون۔
1 ، صوفیہ ، [ای میل محفوظ] ، (862) 478-7263۔
2 ، امیلیا ، [ای میل محفوظ] ، (530) 764-8000۔
3 ، ایما ، [ای میل محفوظ] ، (542) 986-2390۔

CSV فائل کا ایک فیلڈ پڑھنا۔

'-ف' آپشن کو awk کمانڈ کے ساتھ استعمال کیا جاتا ہے تاکہ فائل کی ہر لائن کو تقسیم کرنے کے لیے ڈلیمیٹر سیٹ کیا جا سکے۔ مندرجہ ذیل awk کمانڈ پرنٹ کرے گا۔ نام کا میدان کسٹمر. csv فائل.

$کیٹکسٹمر. csv
$عجیب '،' '{پرنٹ $ 2}'کسٹمر. csv

آؤٹ پٹ:

دوسرے متن کے ساتھ مل کر متعدد شعبوں کو پڑھنا۔

مندرجہ ذیل کمانڈ تین فیلڈز پرنٹ کرے گی۔ کسٹمر. csv عنوان کے متن کو ملا کر ، نام ، ای میل اور فون۔ . کی پہلی لائن۔ کسٹمر. csv فائل میں ہر فیلڈ کا ٹائٹل ہوتا ہے۔ نہیں متغیر فائل کی لائن نمبر پر مشتمل ہوتا ہے جب awk کمانڈ فائل کو پارس کرتی ہے۔ اس مثال میں ، این آر متغیر کا استعمال فائل کی پہلی لائن کو چھوڑنے کے لیے کیا جاتا ہے۔ آؤٹ پٹ 2 دکھائے گا۔این ڈی، 3۔rdاور 4ویںپہلی لائن کے علاوہ تمام لائنوں کے فیلڈز۔

$عجیب '،' 'NR> 1 {پرنٹ' نام: '$ 2' ، ای میل: '$ 3' ، فون: '$ 4}'کسٹمر. csv

آؤٹ پٹ:

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

awk اسکرپٹ کو awk فائل چلا کر چلایا جا سکتا ہے۔ آپ awk فائل کیسے بنا سکتے ہیں اور فائل کو کیسے چلا سکتے ہیں اس مثال میں دکھایا گیا ہے۔ نام کی فائل بنائیں۔ awkcsv.awk مندرجہ ذیل کوڈ کے ساتھ. شروع کی ورڈ کو اسکرپٹ میں استعمال کرنے کے لیے awk کمانڈ کو آگاہ کرنے کے لیے استعمال کیا جاتا ہے۔ شروع دوسرے کاموں کو انجام دینے سے پہلے حصہ لیں۔ یہاں ، فیلڈ جداکار ( ایف ایس ) تقسیم کرنے والے حد بندی اور 2 کی وضاحت کے لیے استعمال ہوتا ہے۔این ڈیاور 1۔سینٹprintf () فنکشن میں استعمال شدہ فارمیٹ کے مطابق فیلڈز پرنٹ کیے جائیں گے۔

awkcsv.عجیب
شروع{ایف ایس= '،'} { پرنٹ ایف '٪ 5s (٪ s)n'،$،$}

رن awkcsv.awk کے مواد کے ساتھ فائل کسٹمر. csv درج ذیل کمانڈ سے فائل کریں۔

$عجیب awkcsv.awk Customer.csv

آؤٹ پٹ:

مواد پر جائیں۔

awk regex

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

مماثل کردار۔سیٹ

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

$پرنٹ ایف 'بیوقوف۔nٹھنڈاnگڑیاnبول ' | عجیب '/[FbC] ool/'

آؤٹ پٹ:

لائن کے آغاز میں سٹرنگ کی تلاش

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

$باہر پھینک دیا -اور لینکس استعمال کرنے کے لیے مفت ہے۔nیہ ایک اوپن سورس سافٹ ویئر ہے۔nLinuxHint ہے۔
ایک مشہور بلاگ سائٹ
| عجیب '/^لینکس/'

آؤٹ پٹ:

لائن کے آخر میں سٹرنگ کی تلاش

'$' علامت کو باقاعدہ اظہار میں استعمال کیا جاتا ہے تاکہ متن کی ہر لائن کے آخر میں کسی بھی پیٹرن کو تلاش کیا جا سکے۔ ‘‘ سکرپٹ لفظ کو مندرجہ ذیل مثال میں تلاش کیا گیا ہے۔ یہاں ، دو سطریں لفظ پر مشتمل ہیں ، سکرپٹ لائن کے آخر میں.

$باہر پھینک دیا -اور پی ایچ پی سکرپٹ۔nجاوا اسکرپٹ۔nبصری پروگرامنگ ' | عجیب '/سکرپٹ $/'

آؤٹ پٹ:

مخصوص کریکٹر سیٹ کو چھوڑ کر تلاش کرنا۔

’’ علامت متن کی ابتدا کی نشاندہی کرتی ہے جب اسے کسی سٹرنگ پیٹرن کے سامنے استعمال کیا جاتا ہے۔ (‘ / ^… /’) یا اس سے پہلے کہ کسی بھی کریکٹر سیٹ کی طرف سے اعلان کیا گیا ہو۔ … […] . اگر ’’ علامت تیسرے بریکٹ کے اندر استعمال ہوتی ہے ، [^…] پھر بریکٹ کے اندر متعین کردہ کردار کو تلاش کے وقت خارج کردیا جائے گا۔ مندرجہ ذیل کمانڈ کسی بھی لفظ کو تلاش کرے گی جس سے شروع نہیں ہو رہا ہے۔ 'ایف' لیکن ختم ہونے کے ساتھ ' ool '. ٹھنڈا اور بول پیٹرن اور ٹیکسٹ ڈیٹا کے مطابق پرنٹ کیا جائے گا۔

$ پرنٹ ایف 'بیوقوف۔nٹھنڈاnگڑیاnبول ' |عجیب' / [^ F] ool /'

آؤٹ پٹ:

مواد پر جائیں۔

awk کیس بے حس regex

بطور ڈیفالٹ ، سٹرنگ میں کسی بھی پیٹرن کو تلاش کرتے وقت ریگولر ایکسپریس کیس حساس تلاش کرتا ہے۔ کیس کی بے حسی تلاش باقاعدہ اظہار کے ساتھ awk کمانڈ کے ذریعے کی جا سکتی ہے۔ مندرجہ ذیل مثال میں ، ٹولر () فنکشن کا استعمال کیس کی غیر حساس تلاش کرنے کے لیے کیا جاتا ہے۔ یہاں ، ان پٹ ٹیکسٹ کی ہر لائن کا پہلا لفظ استعمال کرکے لوئر کیس میں تبدیل ہو جائے گا۔ ٹولر () فنکشن اور ریگولر ایکسپریشن پیٹرن کے ساتھ میچ کریں۔ ٹوپر () فنکشن کو اس مقصد کے لیے بھی استعمال کیا جا سکتا ہے ، اس صورت میں ، پیٹرن کی وضاحت تمام بڑے حروف سے ہونی چاہیے۔ مندرجہ ذیل مثال میں بیان کردہ متن میں تلاش کا لفظ شامل ہے ، 'ویب دو لائنوں میں جو آؤٹ پٹ کے طور پر پرنٹ کی جائے گی۔

$باہر پھینک دیا -اور 'ویب ڈیزائنnویب سازیnفریم ورک ' | عجیب 'ٹولور ($ 0) ~ /^ویب /' '

آؤٹ پٹ:

مواد پر جائیں۔

این ایف (فیلڈز کی تعداد) متغیر کے ساتھ awk۔

این ایف awk کمانڈ کا ایک بلٹ ان متغیر ہے جو ان پٹ ٹیکسٹ کی ہر لائن میں فیلڈز کی کل تعداد گننے کے لیے استعمال ہوتا ہے۔ ایک سے زیادہ لائنوں اور ایک سے زیادہ الفاظ کے ساتھ کوئی بھی ٹیکسٹ فائل بنائیں۔ input.txt فائل یہاں استعمال کی گئی ہے جو پچھلی مثال میں بنائی گئی ہے۔

کمانڈ لائن سے NF کا استعمال۔

یہاں ، پہلی کمانڈ کا مواد ظاہر کرنے کے لیے استعمال کیا جاتا ہے۔ input.txt فائل اور سیکنڈ کمانڈ کا استعمال کرتے ہوئے فائل کی ہر لائن میں فیلڈز کی کل تعداد دکھانے کے لیے استعمال کیا جاتا ہے۔ این ایف متغیر

$ cat input.txt
$ awk '{print NF}' input.txt۔

آؤٹ پٹ:

awk فائل میں NF کا استعمال۔

نامی ایک awk فائل بنائیں۔ count.awk ذیل میں دی گئی اسکرپٹ کے ساتھ۔ جب یہ سکرپٹ کسی بھی ٹیکسٹ ڈیٹا کے ساتھ عمل میں آئے گا تو کل قطعات کے ساتھ ہر لائن کا مواد آؤٹ پٹ کے طور پر پرنٹ کیا جائے گا۔

count.awk

{$ پرنٹ کریں۔}
{پرنٹ کریں'[کل فیلڈز:'این ایف']'}

مندرجہ ذیل کمانڈ سے اسکرپٹ چلائیں۔

$عجیب count.awk input.txt

آؤٹ پٹ:

مواد پر جائیں۔

awk gensub () فنکشن۔

getub () ایک متبادل فنکشن ہے جو خاص حد بندی یا باقاعدہ اظہار کے پیٹرن کی بنیاد پر سٹرنگ تلاش کرنے کے لیے استعمال ہوتا ہے۔ اس فنکشن میں وضاحت کی گئی ہے۔ 'گاک' پیکیج جو بطور ڈیفالٹ انسٹال نہیں ہے۔ اس فنکشن کا نحو ذیل میں دیا گیا ہے۔ پہلے پیرامیٹر میں ریگولر ایکسپریشن پیٹرن یا سرچ ڈیلیمیٹر ہوتا ہے ، دوسرا پیرامیٹر متبادل ٹیکسٹ پر مشتمل ہوتا ہے ، تیسرا پیرامیٹر اس بات کی نشاندہی کرتا ہے کہ سرچ کیسے کی جائے گی اور آخری پیرامیٹر میں وہ ٹیکسٹ شامل ہے جس میں یہ فنکشن لاگو کیا جائے گا۔

نحو:

جینسب(regexp ، متبادل ، کیسے۔[، ہدف])

انسٹال کرنے کے لیے درج ذیل کمانڈ چلائیں۔ گاک استعمال کے لیے پیکیج۔ getub () awk کمانڈ کے ساتھ کام کریں۔

$ sudo apt-get install gawk

کے نام سے ایک ٹیکسٹ فائل بنائیں salesinfo.txt 'اس مثال پر عمل کرنے کے لیے درج ذیل مواد کے ساتھ۔ یہاں ، فیلڈز کو ایک ٹیب سے الگ کیا گیا ہے۔

salesinfo.txt

میرا 700000۔
آپ کا 800000۔
بدھ 750000۔
200000 جمع کریں۔
جمعہ 430000۔
ہفتہ 820000۔

کے عددی شعبوں کو پڑھنے کے لیے درج ذیل کمانڈ کو چلائیں۔ salesinfo.txt تمام سیلز کی کل رقم فائل اور پرنٹ کریں۔ یہاں ، تیسرا پیرامیٹر ، 'G' عالمی تلاش کی نشاندہی کرتا ہے۔ اس کا مطلب ہے کہ فائل کے مکمل مواد میں پیٹرن تلاش کیا جائے گا۔

$عجیب '{x = gensub (' t '،' '،' G '، $ 2)؛ printf x '+'} END {print 0} 'salesinfo.txt| بی سی -

آؤٹ پٹ:

مواد پر جائیں۔

Rand () فنکشن کے ساتھ awk۔

قطار () فنکشن کو 0 سے زیادہ اور 1 سے کم کسی بھی بے ترتیب نمبر کو پیدا کرنے کے لیے استعمال کیا جاتا ہے۔ 1. اعشاریہ کے بعد دو ہندسوں کے ساتھ ایک جزوی نمبر printf () فنکشن لگانے کے لیے پرنٹ کیا جائے گا۔ اگر آپ مندرجہ ذیل کمانڈ کو کئی بار چلاتے ہیں تو آپ کو ہر بار مختلف آؤٹ پٹ ملے گی۔

$عجیب 'BEGIN {printf' نمبر =٪. 2f n '، rand ()*10}'

آؤٹ پٹ:

مواد پر جائیں۔

اوک یوزر ڈیفائنڈ فنکشن۔

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

area.awk

# رقبے کا حساب لگائیں۔
فنکشنرقبہ(اونچائی،چوڑائی){
واپسیاونچائی*چوڑائی
}

# عملدرآمد شروع ہوتا ہے۔
شروع{
پرنٹ کریں'اونچائی کی قدر درج کریں:'
گیٹ لائن ایچ۔< '-'
پرنٹ کریں'چوڑائی کی قدر درج کریں:'
گیٹ لائن ڈبلیو< '-'
پرنٹ کریںرقبہ = 'رقبہ(h،میں)
}

اسکرپٹ چلائیں۔

$عجیب area.awk

آؤٹ پٹ:

مواد پر جائیں۔

اگر مثال کے طور پر

awk دیگر معیاری پروگرامنگ زبانوں کی طرح مشروط بیانات کی حمایت کرتا ہے۔ تین اقسام اگر بیانات اس سیکشن میں تین مثالیں استعمال کر کے دکھائے جاتے ہیں۔ نامی ٹیکسٹ فائل بنائیں۔ items.txt مندرجہ ذیل مواد کے ساتھ۔

items.txt

ایچ ڈی ڈی سیمسنگ $ 100۔
ماؤس اے 4 ٹیک۔
پرنٹر HP $ 200۔

مثال کے طور پر سادہ۔ :

وہ مندرجہ ذیل کمانڈ کا مواد پڑھے گا۔ items.txt فائل اور چیک کریں rd ہر لائن میں فیلڈ ویلیو۔ اگر قیمت خالی ہے تو یہ لائن نمبر کے ساتھ ایک غلطی کا پیغام چھاپے گا۔

$عجیب '{اگر ($ 3 ==' ') پرنٹ' قیمت فیلڈ لائن 'NR} میں غائب ہے'items.txt

آؤٹ پٹ:

if-else مثال:

مندرجہ ذیل کمانڈ آئٹم کی قیمت پرنٹ کرے گی اگر 3۔rdقطار میں فیلڈ موجود ہے ، بصورت دیگر ، یہ ایک غلطی کا پیغام چھاپ دے گا۔

$ awk'{اگر ($ 3 ==' ') پرنٹ' پرائس فیلڈ غائب ہے '
ورنہ پرنٹ کریں 'آئٹم کی قیمت $ 3} ہے'
اشیاء.TXT

آؤٹ پٹ:

if-else-if مثال:

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

$عجیب 'BEGIN {print' نشان درج کریں: '
گیٹ لائن کا نشان<'-'
اگر (نشان> = 90) 'A+' پرنٹ کریں
ورنہ اگر (نشان> = 80) 'A' پرنٹ کریں
ورنہ اگر (نشان> = 70) 'B+' پرنٹ کریں
ورنہ 'فیل'} پرنٹ کریں

آؤٹ پٹ:

مواد پر جائیں۔

awk متغیرات

awk متغیر کا اعلان شیل متغیر کے اعلان کی طرح ہے۔ متغیر کی قدر پڑھنے میں فرق ہے۔ قدر کو پڑھنے کے لیے شیل متغیر کے لیے متغیر نام کے ساتھ '$' علامت استعمال کی جاتی ہے۔ لیکن قیمت پڑھنے کے لیے awk متغیر کے ساتھ '$' استعمال کرنے کی ضرورت نہیں ہے۔

سادہ متغیر کا استعمال:

مندرجہ ذیل کمانڈ نامی متغیر کا اعلان کرے گی۔ 'سائٹ' اور ایک سٹرنگ ویلیو اس متغیر کو تفویض کی گئی ہے۔ متغیر کی قیمت اگلے بیان میں چھپی ہے۔

$عجیب 'BEGIN {site =' LinuxHint.com ' پرنٹ سائٹ} '

آؤٹ پٹ:

فائل سے ڈیٹا حاصل کرنے کے لیے متغیر کا استعمال۔

مندرجہ ذیل کمانڈ لفظ کو تلاش کرے گا۔ 'پرنٹر' فائل میں items.txt . اگر فائل کی کوئی لائن شروع ہوتی ہے۔ 'پرنٹر۔ 'پھر یہ اس کی قیمت کو محفوظ کرے گا۔ سینٹ ، این ڈی اور rd فیلڈز تین متغیر میں نام اور قیمت متغیرات پرنٹ کیے جائیں گے۔

$ awk'/ پرنٹر/ {نام = $ 1 brand برانڈ = $ 2 price قیمت = $ 3 print پرنٹ' آئٹم کا نام = 'نام؛
پرنٹ 'آئٹم پرائس =' قیمت} '
اشیاء.TXT

آؤٹ پٹ:

مواد پر جائیں۔

عجیب صفیں

عددی اور اس سے وابستہ دونوں صفیں awk میں استعمال کی جا سکتی ہیں۔ awk میں سرنی متغیر اعلان دیگر پروگرامنگ زبانوں کے لیے یکساں ہے۔ صفوں کے کچھ استعمال اس سیکشن میں دکھائے گئے ہیں۔

ایسوسی ایٹو صف:

صف کا انڈیکس ایسوسی ایٹو صف کے لیے کوئی تار ہوگا۔ اس مثال میں ، تین عناصر کی ایک ایسوسی ایٹو صف کو اعلان اور پرنٹ کیا گیا ہے۔

$عجیب 'شروع کریں {
books ['Web Design'] = 'HTML 5 سیکھنا'؛
کتابیں ['ویب پروگرامنگ'] = 'پی ایچ پی اور ایس کیو ایل'
books ['PHP Framework'] = 'Laravel 5 سیکھنا'
printf '٪ s n٪ s n٪ s n' ، کتابیں ['ویب ڈیزائن'] ، کتابیں ['ویب پروگرامنگ'] ،
کتابیں ['پی ایچ پی فریم ورک']} '

آؤٹ پٹ:

عددی صف:

تین عناصر کی عددی صف کو ٹیب کو الگ کرکے ڈیکلیئر اور پرنٹ کیا جاتا ہے۔

$ awk'شروع کریں {
نمبر [0] = 80
نمبر [1] = 55
نمبر [2] = 76

# سرنی عناصر پرنٹ کریں۔
printf 'ارے ویلیوز:٪ d۔ٹی٪ dٹی٪ dn'، نمبر [0] ، نمبر [1] ، نمبر [2] } '

آؤٹ پٹ:

مواد پر جائیں۔

اوک لوپ

تین قسم کے لوپس کو awk کے ذریعے سپورٹ کیا جاتا ہے۔ ان لوپس کے استعمال کو یہاں تین مثالوں کے ذریعے دکھایا گیا ہے۔

جبکہ لوپ:

جبکہ لوپ جو کہ مندرجہ ذیل کمانڈ میں استعمال کیا جاتا ہے 5 بار تکرار کرے گا اور بریک اسٹیٹمنٹ کے لیے لوپ سے باہر نکل جائے گا۔

$ عجیب 'شروع {n = 1 جبکہ (n 5) وقفہ پرنٹ n؛ n ++}} '

آؤٹ پٹ:

لوپ کے لیے:

لوپ کے لیے جو کہ درج ذیل awk کمانڈ میں استعمال ہوتا ہے 1 سے 10 تک رقم کا حساب لگائے گا اور قیمت پرنٹ کرے گا۔

$عجیب 'شروع کریں {رقم = 0 کے لیے (n = 1؛ n<= 10; n++) sum=sum+n; print sum }'

آؤٹ پٹ:

ڈو جبکہ لوپ:

مندرجہ ذیل کمانڈ کا ایک do-while لوپ تمام یکساں نمبروں کو 10 سے 5 تک پرنٹ کرے گا۔

$عجیب 'شروع {کاؤنٹر = 10 do {if (count٪ 2 == 0) پرنٹ کاؤنٹر؛ جوابی}
جبکہ (کاؤنٹر> 5)} '

آؤٹ پٹ:

مواد پر جائیں۔

awk پہلا کالم چھاپنے کے لیے۔

کسی بھی فائل کا پہلا کالم awk میں $ 1 متغیر استعمال کرکے پرنٹ کیا جا سکتا ہے۔ لیکن اگر پہلے کالم کی قیمت ایک سے زیادہ الفاظ پر مشتمل ہو تو پہلے کالم کا صرف پہلا لفظ پرنٹ کرتا ہے۔ ایک مخصوص حد بندی کا استعمال کرتے ہوئے ، پہلا کالم مناسب طریقے سے پرنٹ کیا جا سکتا ہے۔ نامی ٹیکسٹ فائل بنائیں۔ students.txt مندرجہ ذیل مواد کے ساتھ۔ یہاں ، پہلے کالم میں دو الفاظ کا متن ہے۔

Students.txt

کنیز فاطمہ 30۔ویںبیچ
عبیر حسین 35۔ویںبیچ
جان ابراہم 40۔ویںبیچ

بغیر کسی حد بندی کے awk کمانڈ چلائیں۔ پہلے کالم کا پہلا حصہ چھپ جائے گا۔

$عجیب '{پرنٹ $ 1}'students.txt

درج ذیل حد بندی کے ساتھ awk کمانڈ چلائیں۔ پہلے کالم کا پورا حصہ چھاپا جائے گا۔

$عجیب '\ s \ s' '{پرنٹ $ 1}'students.txt

آؤٹ پٹ:

مواد پر جائیں۔

awk آخری کالم پرنٹ کرنے کے لیے۔

$ (NF) متغیر کسی بھی فائل کے آخری کالم کو پرنٹ کرنے کے لیے استعمال کیا جا سکتا ہے۔ درج ذیل awk احکامات آخری کالم کے آخری حصے اور مکمل حصے کو پرنٹ کریں گے۔ students.txt فائل.

$عجیب '{پرنٹ $ (NF)}'students.txt
$عجیب '\ s \ s' '{پرنٹ $ (NF)}'students.txt

آؤٹ پٹ:

مواد پر جائیں۔

گریپ کے ساتھ عجیب

grep لینکس کی ایک اور مفید کمانڈ ہے جو کسی بھی باقاعدہ اظہار پر مبنی فائل میں مواد تلاش کرتی ہے۔ awk اور grep دونوں احکامات کو ایک ساتھ کیسے استعمال کیا جا سکتا ہے یہ مندرجہ ذیل مثال میں دکھایا گیا ہے۔ گرفت کمانڈ ملازم آئی ڈی کی معلومات تلاش کرنے کے لیے استعمال کیا جاتا ہے ، 1002۔ 'سے ملازم. txt فائل. گریپ کمانڈ کی آؤٹ پٹ کو بطور ان پٹ ڈیٹا بھیجا جائے گا۔ ملازم ID کی تنخواہ کی بنیاد پر 5٪ بونس شمار اور پرنٹ کیا جائے گا ، 1002 ' awk کمانڈ کے ذریعے۔

$کیٹملازم. txt
$گرفت '1002'ملازم. txt| عجیب ' t' '{print $ 2' $ $ ($ 3*5)/100 'بونس'} ملے گا

آؤٹ پٹ:

مواد پر جائیں۔

BASH فائل کے ساتھ awk

دیگر لینکس کمانڈ کی طرح ، awk کمانڈ بھی BASH اسکرپٹ میں استعمال کیا جا سکتا ہے۔ نامی ٹیکسٹ فائل بنائیں۔ customers.txt مندرجہ ذیل مواد کے ساتھ۔ اس فائل کی ہر لائن میں چار فیلڈز کے بارے میں معلومات ہیں۔ یہ کسٹمر کی شناخت ، نام ، پتہ اور موبائل نمبر ہیں جن سے الگ کیا گیا ہے۔ '/ '.

customers.txt

AL4934 / چارلس ایم برنر / 4838 بیگلی اسٹریٹ ، ہنٹس ویل ، الاباما / 256-671-7942
CA5455 / ورجینیا ایس موٹا / 930 بیسل اسٹریٹ ، والیسیٹو ، کیلیفورنیا / 415-679-5908
IL4855 / Ann A Neale / 1932 Patterson Fork Road، Chicago، Illinois / 773-550-5107

نام کی ایک bash فائل بنائیں۔ item_search.bash مندرجہ ذیل اسکرپٹ کے ساتھ۔ اس اسکرپٹ کے مطابق ، ریاست کی قیمت صارف سے لی جائے گی اور اس میں تلاش کی جائے گی۔ customers.txt کی طرف سے فائل گرفت کمانڈ اور awk کمانڈ کو بطور ان پٹ منتقل کیا گیا۔ اوک کمانڈ پڑھے گا۔ این ڈی اور ویں ہر لائن کے فیلڈز اگر ان پٹ ویلیو کسی بھی اسٹیٹ ویلیو سے مماثل ہے۔ customers.txt فائل پھر یہ کسٹمر کی پرنٹ کرے گی۔ نام اور موبائل فون کانمبر ، ورنہ ، یہ پیغام پرنٹ کرے گا۔ کوئی گاہک نہیں ملا۔ .

item_search.bash

#!/bin/bash
باہر پھینک دیا 'ریاست کا نام درج کریں:'
پڑھیںحالت
گاہکوں='گرفت '$ state'customers.txt| عجیب '/' '{پرنٹ' کسٹمر کا نام: '$ 2 ،' ،
موبائل نمبر: '$ 4}'
'
اگر [ '$ گاہکوں' !='' ]؛پھر
باہر پھینک دیا $ گاہکوں
اور
باہر پھینک دیا 'کوئی گاہک نہیں ملا'
ہو

آؤٹ پٹ دکھانے کے لیے درج ذیل کمانڈز چلائیں۔

$کیٹcustomers.txt
$لشکرitem_search.bash

آؤٹ پٹ:

مواد پر جائیں۔

sed کے ساتھ awk

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

$کیٹملازم. txt
$sed '/جے/پی'ملازم. txt| عجیب ' t' '{printf'٪ s (٪ s) n '، $ 2 ، $ 1}'

آؤٹ پٹ:

مواد پر جائیں۔

نتیجہ:

ڈیٹا کو مناسب طریقے سے فلٹر کرنے کے بعد آپ کسی بھی ٹیبلر یا ڈیلیمیٹڈ ڈیٹا کی بنیاد پر مختلف قسم کی رپورٹس بنانے کے لیے awk کمانڈ استعمال کر سکتے ہیں۔ امید ہے کہ آپ اس ٹیوٹوریل میں دکھائی گئی مثالوں پر عمل کرنے کے بعد سیکھ سکیں گے کہ awk کمانڈ کیسے کام کرتی ہے۔