20 أمثلة awk

20 Awk Examples



توجد العديد من الأدوات المساعدة في نظام التشغيل Linux للبحث وإنشاء تقرير من بيانات نصية أو ملف. يمكن للمستخدم بسهولة إجراء العديد من أنواع البحث والاستبدال وإعداد التقارير عن المهام باستخدام أوامر awk و grep و sed. awk ليس مجرد أمر. إنها لغة برمجة يمكن استخدامها من كل من ملف Terminal و awk. وهو يدعم المتغير والبيان الشرطي والمصفوفة والحلقات وما إلى ذلك مثل لغات البرمجة النصية الأخرى. يمكنه قراءة أي محتوى سطر بسطر وفصل الحقول أو الأعمدة بناءً على محدد معين. كما أنه يدعم التعبير العادي للبحث عن سلسلة معينة في محتوى النص أو الملف ويتخذ الإجراءات في حالة العثور على أي تطابق. يتم عرض كيفية استخدام الأمر awk والنص البرمجي في هذا البرنامج التعليمي باستخدام 20 مثالًا مفيدًا.

محتويات:

  1. awk مع printf
  2. awk للانقسام على مساحة بيضاء
  3. awk لتغيير المحدد
  4. awk مع بيانات مفصولة بعلامات جدولة
  5. awk مع بيانات csv
  6. awk regex
  7. regex غير حساس لحالة الأحرف awk
  8. awk مع متغير nf (عدد الحقول)
  9. وظيفة awk gensub ()
  10. awk مع وظيفة rand ()
  11. وظيفة محددة من قبل المستخدم
  12. توقظ إذا
  13. متغيرات awk
  14. صفائف awk
  15. حلقة awk
  16. awk لطباعة العمود الأول
  17. awk لطباعة العمود الأخير
  18. awk مع grep
  19. awk مع ملف البرنامج النصي bash
  20. awk مع sed

استخدام awk مع printf

printf () تستخدم الوظيفة لتنسيق أي إخراج في معظم لغات البرمجة. يمكن استخدام هذه الوظيفة مع ملفات awk الأمر لتوليد أنواع مختلفة من المخرجات المنسقة. يتم استخدام الأمر awk بشكل أساسي لأي ملف نصي. قم بإنشاء ملف نصي باسم Employee.txt مع المحتوى الموضح أدناه حيث يتم فصل الحقول بعلامة تبويب (' t').







Employee.txt



1001 جون سينا ​​40000
1002 Jafar Iqbal 60000
1003 ماهر نيجار 30000
1004 ندى عبدالله احمد عوض عوضه البدرى 70000

سيقرأ الأمر awk التالي البيانات من Employee.txt ملف سطرًا بسطر وطباعة أول ملف بعد التنسيق. هنا، ٪ 10s n يعني أن الناتج سيكون بطول 10 أحرف. إذا كانت قيمة المخرجات أقل من 10 أحرف ، فسيتم إضافة المسافات في مقدمة القيمة.



awk دولار'{printf'٪ 10sن'، $ 1}'الموظف.رسالة قصيرة

انتاج:





انتقل إلى المحتوى



awk للانقسام على مساحة بيضاء

فاصل الكلمة أو الحقل الافتراضي لتقسيم أي نص هو المسافة البيضاء. يمكن أن يأخذ الأمر awk قيمة نصية كمدخلات بطرق مختلفة. يتم تمرير نص الإدخال من رما - طرد - قذف الأمر في المثال التالي. النص، ' أنا أحب البرمجة سيتم تقسيمها بواسطة الفاصل الافتراضي ، فضاء ، وستتم طباعة الكلمة الثالثة كإخراج.

$رما - طرد - قذف أنا أحب البرمجة | awk '{print $ 3}'

انتاج:

انتقل إلى المحتوى

awk لتغيير المحدد

يمكن استخدام الأمر awk لتغيير المحدد لأي محتوى ملف. افترض أن لديك ملفًا نصيًا باسم phone.txt مع المحتوى التالي حيث يتم استخدام ':' كفاصل حقل لمحتوى الملف.

phone.txt

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

قم بتشغيل الأمر awk التالي لتغيير المحدد ، ':' بواسطة '-' لمحتوى الملف ، phone.txt .

$ القط phone.txt
$ awk '$ 1 = $ 1' FS = ':' OFS = '-' phone.txt

انتاج:

انتقل إلى المحتوى

awk مع بيانات مفصولة بعلامات جدولة

يحتوي الأمر awk على العديد من المتغيرات المضمنة التي تُستخدم لقراءة النص بطرق مختلفة. اثنان منهم FS و OFS . FS هو فاصل مجال الإدخال و OFS هي متغيرات فاصل مجال الإخراج. يتم عرض استخدامات هذه المتغيرات في هذا القسم. إنشاء التبويب ملف منفصل اسمه input.txt بالمحتوى التالي لاختبار استخدامات FS و OFS المتغيرات.

Input.txt

لغة البرمجة النصية من جانب العميل
لغة البرمجة النصية من جانب الخادم
خادم قاعدة البيانات
قاعدة بيانات للانترنت

باستخدام متغير FS مع علامة التبويب

سيقوم الأمر التالي بتقسيم كل سطر من input.txt ملف بناءً على علامة التبويب (' t') واطبع الحقل الأول من كل سطر.

$awk '{print $ 1}' FS=' t'input.txt

انتاج:

استخدام متغير OFS مع علامة التبويب

سيطبع الأمر awk التالي ملف 9ذ و 5ذ حقول 'Ls -l' إخراج الأمر باستخدام فاصل علامات التبويب بعد طباعة عنوان العمود اسم و مقاس . هنا، OFS متغير يستخدم لتنسيق الإخراج من خلال علامة تبويب.

$ls -ال
$ls -ال | awk -الخامس OFS=' t' 'BEGIN {printf'٪ s t٪ s n '،' Name '،' Size '} {print $ 9، $ 5}'

انتاج:

انتقل إلى المحتوى

awk مع بيانات CSV

يمكن تحليل محتوى أي ملف CSV بعدة طرق باستخدام الأمر awk. أنشئ ملف CSV باسم ' customer.csv 'بالمحتوى التالي لتطبيق الأمر awk.

customer.txt

المعرف والاسم والبريد الإلكتروني والهاتف
1، Sophia، [email protected] ، (862) 478-7263
2، Amelia، [email protected] ، (530) 764-8000
3 ، إيما ، [البريد الإلكتروني محمي] ، (542) 986-2390

قراءة حقل واحد من ملف CSV

'-F' يستخدم الخيار مع الأمر awk لتعيين المحدد لتقسيم كل سطر من الملف. سيطبع الأمر awk التالي ملف اسم مجال ال العميل. csv ملف.

$قطcustomer.csv
$awk -F '،' '{print $ 2}'customer.csv

انتاج:

قراءة حقول متعددة بدمجها مع نص آخر

سيطبع الأمر التالي ثلاثة حقول من customer.csv من خلال الجمع بين نص العنوان ، الاسم والبريد الإلكتروني والهاتف . السطر الأول من customer.csv يحتوي الملف على عنوان كل حقل. لا يحتوي المتغير على رقم سطر الملف عندما يوزع الأمر awk الملف. في هذا المثال، NR المتغير يستخدم لحذف السطر الأول من الملف. سيظهر الإخراج 2اختصار الثاني، 3بحث وتطويرو 4ذحقول جميع الأسطر ما عدا السطر الأول.

$awk -F '،' 'NR> 1 {print' Name: '$ 2' ، البريد الإلكتروني: '$ 3' ، الهاتف: '$ 4}'customer.csv

انتاج:

قراءة ملف CSV باستخدام برنامج نصي awk

يمكن تنفيذ البرنامج النصي awk عن طريق تشغيل ملف awk. يوضح هذا المثال كيف يمكنك إنشاء ملف awk وتشغيل الملف. قم بإنشاء ملف باسم awkcsv.awk مع الكود التالي. يبدأ يتم استخدام الكلمة الأساسية في البرنامج النصي لإعلام الأمر awk لتنفيذ البرنامج النصي الخاص بـ يبدأ الجزء الأول قبل تنفيذ المهام الأخرى. هنا ، فاصل المجال ( FS ) لتعريف محدد التقسيم و 2اختصار الثانيو 1شارعستتم طباعة الحقول وفقًا للتنسيق المستخدم في وظيفة printf ().

awkcsv.awk
يبدأ{FS= '،'} { printf '٪ 5s (٪ s)ن'و$2و$1}

يركض awkcsv.awk ملف بمحتوى العميل. csv ملف بالأمر التالي.

$awk -Fawkcsv.awk customer.csv

انتاج:

انتقل إلى المحتوى

awk regex

التعبير العادي هو نمط يُستخدم للبحث عن أي سلسلة في النص. يمكن إجراء أنواع مختلفة من مهام البحث والاستبدال المعقدة بسهولة بالغة باستخدام التعبير العادي. يتم عرض بعض الاستخدامات البسيطة للتعبير النمطي باستخدام الأمر awk في هذا القسم.

مطابقة الطابعيضع

الأمر التالي سيطابق الكلمة أحمق أو منطقي أو رائع مع سلسلة الإدخال والطباعة إذا وجدت الكلمة. هنا، لعبة لن تتطابق ولن تطبع.

$printf 'أحمقنرائعنلعبةنمنطقي | awk '/ [FbC] ool /'

انتاج:

سلسلة البحث في بداية السطر

'^' يُستخدم الرمز في التعبير النمطي للبحث عن أي نمط في بداية السطر. ' لينكس سيتم البحث عن الكلمة في بداية كل سطر من النص في المثال التالي. هنا ، يبدأ سطرين بالنص ، لينكس وسيتم عرض هذين السطرين في الإخراج.

$رما - طرد - قذف لينكس مجاني للاستخدامنإنه برنامج مفتوح المصدرنLinuxHint هو
موقع مدونة مشهور '
| awk '/ ^ لينكس /'

انتاج:

سلسلة البحث في نهاية السطر

'$' يستخدم الرمز في التعبير العادي للبحث عن أي نمط في نهاية كل سطر من النص. ' النصي تم البحث عن كلمة في المثال التالي. هنا سطرين يحتويان على الكلمة ، النصي في نهاية السطر.

$رما - طرد - قذف نص PHPنجافا سكريبتنالبرمجة المرئية | awk '/ Script $ /'

انتاج:

البحث عن طريق حذف مجموعة أحرف معينة

'^' يشير الرمز إلى بداية النص عند استخدامه أمام أي نمط سلسلة ('/ ^ ... /') أو قبل تعيين أي حرف تم الإعلان عنه بواسطة ^ […] . إذا كان '^' يتم استخدام الرمز داخل القوس الثالث ، [^ ...] ثم يتم حذف مجموعة الأحرف المحددة داخل القوس في وقت البحث. سيبحث الأمر التالي عن أي كلمة لا تبدأ بـ 'F' لكن تنتهي بـ أول '. رائع و منطقي ستتم طباعتها وفقًا للنمط وبيانات النص.

$ printf 'أحمقنرائعنلعبةنمنطقي |awk'/ [^ F] ool /'

انتاج:

انتقل إلى المحتوى

regex غير حساس لحالة الأحرف awk

بشكل افتراضي ، يقوم التعبير العادي ببحث حساس لحالة الأحرف عند البحث عن أي نمط في السلسلة. يمكن إجراء بحث غير حساس لحالة الأحرف عن طريق الأمر awk باستخدام التعبير العادي. في المثال التالي ، لخفض() يتم استخدام الوظيفة لإجراء بحث غير حساس لحالة الأحرف. هنا ، سيتم تحويل الكلمة الأولى من كل سطر من نص الإدخال إلى أحرف صغيرة باستخدام لخفض() تعمل وتتطابق مع نمط التعبير العادي. توبر () يمكن أيضًا استخدام الوظيفة لهذا الغرض ، في هذه الحالة ، يجب تحديد النمط بالكامل بأحرف كبيرة. النص المحدد في المثال التالي يحتوي على كلمة البحث ، الويب 'في سطرين ستتم طباعتهما كناتج.

$رما - طرد - قذف تصميم الويبنتطوير الشبكةنإطار العمل' | awk 'tolower ($ 0) ~ / ^ web /؛'

انتاج:

انتقل إلى المحتوى

awk مع متغير NF (عدد الحقول)

نف هو متغير مضمن لأمر awk يستخدم لحساب العدد الإجمالي للحقول في كل سطر من نص الإدخال. قم بإنشاء أي ملف نصي يحتوي على عدة أسطر وكلمات متعددة. المدخلات يتم استخدام الملف هنا الذي تم إنشاؤه في المثال السابق.

باستخدام NF من سطر الأوامر

هنا ، يتم استخدام الأمر الأول لعرض محتوى input.txt يتم استخدام الأمر file and second command لإظهار العدد الإجمالي للحقول في كل سطر من الملف باستخدام نف عامل.

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

انتاج:

استخدام NF في ملف awk

قم بإنشاء ملف awk باسم العد مع النص الوارد أدناه. عندما يتم تنفيذ هذا البرنامج النصي مع أي بيانات نصية ، ستتم طباعة كل محتوى سطر به إجمالي الحقول كإخراج.

العد

{طباعة $0}
{مطبعة'[إجمالي الحقول:'نف']'}

قم بتشغيل البرنامج النصي بالأمر التالي.

$awk -Fcount.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' إلى البحث العام. هذا يعني أنه سيتم البحث عن النمط في المحتوى الكامل للملف.

$awk '{x = gensub (' t '،' '،' G '، $ 2) ؛ printf x '+'} END {print 0} 'salesinfo.txt| قبل الميلاد -ال

انتاج:

انتقل إلى المحتوى

awk مع وظيفة rand ()

صف() تُستخدم الدالة لتوليد أي رقم عشوائي أكبر من 0 وأقل من 1. لذلك ، ستُنشئ دائمًا عددًا كسريًا أقل من 1. سينشئ الأمر التالي رقمًا عشوائيًا كسريًا ويضرب القيمة بـ 10 للحصول على رقم أكثر من 1. ستتم طباعة رقم كسري يتكون من رقمين بعد الفاصلة العشرية لتطبيق وظيفة printf (). إذا قمت بتشغيل الأمر التالي عدة مرات ، فستحصل على إخراج مختلف في كل مرة.

$awk 'BEGIN {printf' Number is =٪. 2f n '، rand () * 10}'

انتاج:

انتقل إلى المحتوى

وظيفة محددة من قبل المستخدم

جميع الوظائف التي تم استخدامها في الأمثلة السابقة هي وظائف مدمجة. ولكن يمكنك إعلان وظيفة محددة من قبل المستخدم في البرنامج النصي awk الخاص بك للقيام بأي مهمة معينة. لنفترض أنك تريد إنشاء دالة مخصصة لحساب مساحة المستطيل. للقيام بهذه المهمة ، أنشئ ملفًا باسم ' المنطقة 'بالنص التالي. في هذا المثال ، تم تسمية دالة معرّفة من قبل المستخدم منطقة() تم التصريح عنه في البرنامج النصي الذي يحسب المنطقة بناءً على معلمات الإدخال ويعيد قيمة المنطقة. الحصول على خط يتم استخدام الأمر هنا لأخذ مدخلات من المستخدم.

المنطقة

# احسب المنطقة
وظيفةمنطقة(ارتفاعوالعرض){
إرجاعارتفاع*العرض
}

# يبدأ التنفيذ
يبدأ{
مطبعة'أدخل قيمة الارتفاع:'
جيتلاين ح< '-'
مطبعة'أدخل قيمة العرض:'
الحصول على w< '-'
مطبعة'المساحة ='منطقة(حوفي)
}

قم بتشغيل البرنامج النصي.

$awk -Fالمنطقة

انتاج:

انتقل إلى المحتوى

awk إذا كان المثال

يدعم awk العبارات الشرطية مثل لغات البرمجة القياسية الأخرى. يتم عرض ثلاثة أنواع من عبارات if في هذا القسم باستخدام ثلاثة أمثلة. قم بإنشاء ملف نصي باسم items.txt بالمحتوى التالي.

items.txt

HDD سامسونج 100 دولار
ماوس ايه 4 تك
طابعة HP 200 دولار

إذا كان المثال بسيطًا :

سيقرأ الأمر التالي محتوى ملف items.txt ملف وتحقق من ملف 3بحث وتطوير قيمة الحقل في كل سطر. إذا كانت القيمة فارغة ، فسيتم طباعة رسالة خطأ برقم السطر.

$awk '{if ($ 3 ==' ') اطبع' حقل السعر مفقود في السطر 'NR}'items.txt

انتاج:

مثال if-else:

سيطبع الأمر التالي سعر العنصر إذا كانت 3بحث وتطويرالحقل موجود في السطر ، وإلا فسيتم طباعة رسالة خطأ.

awk دولار'{if ($ 3 ==' ') اطبع 'حقل السعر مفقود'
آخر طباعة 'سعر العنصر هو' $ 3} '
العناصر.رسالة قصيرة

انتاج:

مثال if-else-if:

عندما يتم تنفيذ الأمر التالي من المحطة ، فسيأخذ مدخلات من المستخدم. ستتم مقارنة قيمة الإدخال مع كل شرط حتى يصبح الشرط صحيحًا. إذا أصبح أي شرط صحيحًا ، فسيتم طباعة الدرجة المقابلة. إذا كانت قيمة الإدخال لا تتطابق مع أي شرط ، فستفشل الطباعة.

$awk 'ابدأ {print' أدخل العلامة: '
علامة getline<'-'
إذا (علامة> = 90) اطبع 'A +'
وإلا إذا (علامة> = 80) اطبع 'أ'
وإلا إذا (علامة> = 70) اطبع 'B +'
آخر طباعة 'فشل'} '

انتاج:

انتقل إلى المحتوى

متغيرات awk

إعلان متغير awk مشابه لإعلان متغير shell. يوجد اختلاف في قراءة قيمة المتغير. يستخدم الرمز '$' مع اسم المتغير لمتغير shell لقراءة القيمة. لكن ليست هناك حاجة لاستخدام '$' مع متغير awk لقراءة القيمة.

باستخدام متغير بسيط:

سيعلن الأمر التالي عن متغير اسمه 'موقع' ويتم تعيين قيمة سلسلة لهذا المتغير. تتم طباعة قيمة المتغير في العبارة التالية.

$awk 'BEGIN {site =' LinuxHint.com '؛ موقع الطباعة} '

انتاج:

استخدام متغير لاسترداد البيانات من ملف

الأمر التالي سيبحث عن الكلمة 'طابعة' في الملف items.txt . إذا كان أي سطر من الملف يبدأ بـ 'طابعة ثم سيخزن قيمة 1شارع و 2اختصار الثاني و 3بحث وتطوير الحقول في ثلاثة متغيرات. اسم و سعر ستتم طباعة المتغيرات.

awk دولار'/ طابعة / {name = $ 1؛ brand = $ 2؛ price = $ 3؛ print' item name = 'name؛
طباعة 'سعر السلعة =' السعر} '
العناصر.رسالة قصيرة

انتاج:

انتقل إلى المحتوى

صفائف awk

يمكن استخدام كل من المصفوفات الرقمية والمصفوفة المرتبطة في awk. إعلان متغير الصفيف في awk هو نفسه مع لغات البرمجة الأخرى. يتم عرض بعض استخدامات المصفوفات في هذا القسم.

مصفوفة متصلة:

سيكون فهرس المصفوفة أي سلسلة للمصفوفة الترابطية. في هذا المثال ، يتم الإعلان عن مجموعة ترابطية من ثلاثة عناصر وطباعتها.

$awk 'يبدأ {
كتب ['Web Design'] = 'تعلم HTML 5'؛
books ['Web Programming'] = 'PHP and MySQL'
books ['PHP Framework'] = 'تعلم Laravel 5'
printf '٪ s n٪ s n٪ s n' ، كتب ['Web Design'] ، كتب ['Web Programming'] ،
كتب ['PHP Framework']} '

انتاج:

مصفوفة رقمية:

يتم التصريح عن مصفوفة عددية من ثلاثة عناصر وطباعتها عن طريق فصل الجدولة.

awk دولار'يبدأ {
رقم [0] = 80 ؛
رقم [1] = 55 ؛
رقم [2] = 76 ؛

# عناصر مجموعة طباعة
قيم صفيف printf ':٪ d t٪د t٪دن'، رقم [0] ، رقم [1] ، رقم [2] ؛ } '

انتاج:

انتقل إلى المحتوى

حلقة awk

يتم دعم ثلاثة أنواع من الحلقات بواسطة awk. يتم عرض استخدامات هذه الحلقات هنا باستخدام ثلاثة أمثلة.

حائط اللوب:

while loop المستخدم في الأمر التالي سوف يتكرر 5 مرات ويخرج من الحلقة for break.

$ awk 'BEGIN {n = 1 ؛ بينما (ن 5) كسر ؛ طباعة ن ؛ n ++}} '

انتاج:

لحلقة:

حلقة For المستخدمة في الأمر awk التالي ستحسب المجموع من 1 إلى 10 وتطبع القيمة.

$awk 'BEGIN {sum = 0 ؛ لـ (ن = 1 ؛ ن<= 10; n++) sum=sum+n; print sum }'

انتاج:

حلقة Do-while:

ستقوم حلقة do-while للأمر التالي بطباعة جميع الأرقام الزوجية من 10 إلى 5.

$awk 'ابدأ {العداد = 10 ؛ افعل {إذا (عداد٪ 2 == 0) عداد طباعة ؛ عداد-- }
بينما (عداد> 5)} '

انتاج:

انتقل إلى المحتوى

awk لطباعة العمود الأول

يمكن طباعة العمود الأول من أي ملف باستخدام متغير $ 1 في awk. ولكن إذا كانت قيمة العمود الأول تحتوي على كلمات متعددة ، فسيتم طباعة الكلمة الأولى فقط من العمود الأول. باستخدام محدد معين ، يمكن طباعة العمود الأول بشكل صحيح. قم بإنشاء ملف نصي باسم الطلاب. txt بالمحتوى التالي. هنا ، يحتوي العمود الأول على نص كلمتين.

الطلاب. txt

كانيز فاطمة 30ذحزمة
عبير حسين 35ذحزمة
جون ابراهام 40ذحزمة

قم بتشغيل الأمر awk بدون أي محدد. ستتم طباعة الجزء الأول من العمود الأول.

$awk '{print $ 1}'الطلاب. txt

قم بتشغيل الأمر awk باستخدام المحدد التالي. ستتم طباعة الجزء الكامل من العمود الأول.

$awk -F '\ s \ s' '{print $ 1}'الطلاب. txt

انتاج:

انتقل إلى المحتوى

awk لطباعة العمود الأخير

$ (NF) يمكن استخدام المتغير لطباعة العمود الأخير من أي ملف. ستطبع أوامر awk التالية الجزء الأخير والجزء الكامل من العمود الأخير من الطلاب. txt ملف.

$awk '{print $ (NF)}'الطلاب. txt
$awk -F '\ s \ s' '{print $ (NF)}'الطلاب. txt

انتاج:

انتقل إلى المحتوى

awk مع grep

grep هو أمر مفيد آخر في Linux للبحث عن محتوى في ملف بناءً على أي تعبير عادي. يوضح المثال التالي كيف يمكن استخدام كلا الأمرين awk و grep معًا. سيطرة يتم استخدام الأمر للبحث عن معلومات معرف الموظف ، ' 1002 ' من عند الموظف. xt ملف. سيتم إرسال إخراج الأمر grep إلى awk كبيانات إدخال. سيتم احتساب المكافأة بنسبة 5٪ وطباعتها بناءً على راتب معرّف الموظف ، 1002 ' بواسطة أمر awk.

$قطEmployee.txt
$سيطرة '1002'Employee.txt| awk -F ' t' '{print $ 2' ستحصل على $ '($ 3 * 5) / 100' bonus '}'

انتاج:

انتقل إلى المحتوى

awk مع ملف BASH

مثل أوامر Linux الأخرى ، يمكن أيضًا استخدام الأمر awk في برنامج نصي BASH. قم بإنشاء ملف نصي باسم customers.txt بالمحتوى التالي. يحتوي كل سطر من هذا الملف على معلومات حول أربعة حقول. هذه هي معرّف العميل واسمه وعنوانه ورقم هاتفه المحمول المفصولة عن بعضها '/ '.

customers.txt

AL4934 / Charles M Brunner / 4838 Beeghley Street، Huntsville، Alabama / 256-671-7942
CA5455 / Virginia S Mota / 930 Bassel Street، VALLECITO، California / 415-679-5908
IL4855 / آن أ نيل / 1932 طريق باترسون فورك ، شيكاغو ، إلينوي / 773-550-5107

قم بإنشاء ملف bash يسمى item_search.bash بالنص التالي. وفقًا لهذا النص ، سيتم أخذ قيمة الحالة من المستخدم والبحث فيها العملاء. txt ملف بواسطة سيطرة الأمر وتمريره إلى الأمر awk كمدخل. سيقرأ الأمر Awk 2اختصار الثاني و 4ذ حقول كل سطر. إذا كانت قيمة الإدخال تتطابق مع أي قيمة حالة customers.txt ملف ثم سيتم طباعة العميل اسم و رقم الهاتف المحمول وإلا فسيتم طباعة الرسالة لم يتم العثور على زبون .

item_search.bash

#!/bin/bash
رما - طرد - قذف 'أدخل اسم الولاية:'
اقرأحالة
عملاء='سيطرة 'الدولة'customers.txt| awk -F '/' '{print' Customer Name: '$ 2،'،
رقم الجوال: '$ 4}'
'
لو [ 'عملاء $' !=' ]؛من ثم
رما - طرد - قذف عملاء $
آخر
رما - طرد - قذف 'لم يتم العثور على زبون'
يكون

قم بتشغيل الأوامر التالية لإظهار النواتج.

$قطcustomers.txt
$سحقitem_search.bash

انتاج:

انتقل إلى المحتوى

awk مع sed

أداة أخرى مفيدة للبحث في Linux هي سيد . يمكن استخدام هذا الأمر للبحث عن نص واستبداله في أي ملف. يوضح المثال التالي استخدام الأمر awk مع سيد أمر. هنا ، سيبحث الأمر sed في جميع أسماء الموظفين التي تبدأ بـ ' ي ويمرر إلى الأمر awk كمدخل. سوف awk طباعة الموظف اسم و هوية شخصية بعد التنسيق.

$قطEmployee.txt
$سيد '/ ي / ع'Employee.txt| awk -F ' t' '{printf'٪ s (٪ s) n '، $ 2، $ 1}'

انتاج:

انتقل إلى المحتوى

استنتاج:

يمكنك استخدام الأمر awk لإنشاء أنواع مختلفة من التقارير استنادًا إلى أي بيانات مجدولة أو محددة بعد تصفية البيانات بشكل صحيح. آمل أن تكون قادرًا على معرفة كيفية عمل أمر awk بعد ممارسة الأمثلة الموضحة في هذا البرنامج التعليمي.