توجد العديد من الأدوات المساعدة في نظام التشغيل Linux للبحث وإنشاء تقرير من بيانات نصية أو ملف. يمكن للمستخدم بسهولة إجراء العديد من أنواع البحث والاستبدال وإعداد التقارير عن المهام باستخدام أوامر awk و grep و sed. awk ليس مجرد أمر. إنها لغة برمجة يمكن استخدامها من كل من ملف Terminal و awk. وهو يدعم المتغير والبيان الشرطي والمصفوفة والحلقات وما إلى ذلك مثل لغات البرمجة النصية الأخرى. يمكنه قراءة أي محتوى سطر بسطر وفصل الحقول أو الأعمدة بناءً على محدد معين. كما أنه يدعم التعبير العادي للبحث عن سلسلة معينة في محتوى النص أو الملف ويتخذ الإجراءات في حالة العثور على أي تطابق. يتم عرض كيفية استخدام الأمر awk والنص البرمجي في هذا البرنامج التعليمي باستخدام 20 مثالًا مفيدًا.
محتويات:
- awk مع printf
- awk للانقسام على مساحة بيضاء
- awk لتغيير المحدد
- awk مع بيانات مفصولة بعلامات جدولة
- awk مع بيانات csv
- awk regex
- regex غير حساس لحالة الأحرف awk
- awk مع متغير nf (عدد الحقول)
- وظيفة awk gensub ()
- awk مع وظيفة rand ()
- وظيفة محددة من قبل المستخدم
- توقظ إذا
- متغيرات awk
- صفائف awk
- حلقة awk
- awk لطباعة العمود الأول
- awk لطباعة العمود الأخير
- awk مع grep
- awk مع ملف البرنامج النصي bash
- 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
بلدي 700000800000 الخاص بك
الأربعاء 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-7942CA5455 / 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 بعد ممارسة الأمثلة الموضحة في هذا البرنامج التعليمي.