Skip to main content

Gawk - قيادة لينكس - قيادة يونيكس

Learn How To Hoverboard in Minutes!!! (يوليو 2026)

Learn How To Hoverboard in Minutes!!! (يوليو 2026)
Anonim

اسم

gawk - نمط مسح وتجهيز اللغة

ملخص

البله خيارات نمط POSIX أو GNU -F ملف البرنامج -- ملف …البله خيارات نمط POSIX أو GNU -- برنامج نص ملف …

pgawk خيارات نمط POSIX أو GNU -F ملف البرنامج -- ملف …pgawk خيارات نمط POSIX أو GNU -- برنامج نص ملف …

وصف

البله هو تنفيذ مشروع جنو للغة برمجة AWK. يتوافق مع تعريف اللغة في معيار POSIX 1003.2 لغة القيادة والمرافق. ويستند هذا الإصدار بدوره على الوصف في لغة برمجة AWK ، من خلال Aho و Kernighan و Weinberger ، مع الميزات الإضافية الموجودة في الإصدار System V الإصدار 4 من UNIX AWK . البله كما يوفر أحدث مختبرات بيل AWK ملحقات ، وعدد من ملحقات GNU محددة.

Pgawk هي النسخة التنميط من البله . انها متطابقة في كل وسيلة ل البله ، إلا أن البرامج تعمل ببطء أكثر ، وأنها تنتج ملفًا شخصيًا للتنفيذ تلقائيًا في الملف awkprof.out عند الانتهاء. شاهد --الملف الشخصي الخيار ، أدناه.

سطر الأوامر يتكون من خيارات ل البله نفسه، نص برنامج AWK (إذا لم يتم توفيره عبر -F أو --ملف خيارات) ، والقيم لتكون متاحة في ARGC و ARGV متغيرات AWK محددة مسبقا.

تنسيق الخيار

البله قد تكون الخيارات خيارات POSIX حرفًا واحدًا أو خيارات طويلة لأسلوب GNU. تبدأ خيارات POSIX بـ `` - '' مفرد ، بينما تبدأ الخيارات الطويلة بـ `` - ''. يتم توفير خيارات طويلة لكل من ميزات GNU الخاصة وميزات POSIX.

بعد معيار POSIX ، البله يتم توفير خيارات محددة عبر الحجج إلى -W اختيار. مضاعف -W قد يتم توفير خيارات كل -W الخيار له خيار طويل ، كما هو مفصل أدناه. يتم ربط الوسيطات للخيارات الطويلة مع الخيار بواسطة = التوقيع ، مع عدم وجود مسافات متداخلة ، أو قد يتم توفيرها في وسيطة سطر الأوامر التالية. قد يتم اختصار الخيارات الطويلة ، طالما أن الاختصار يبقى فريدًا.

خيارات

البله يقبل الخيارات التالية ، مرتبة أبجديا.

-F خ

--field فاصل خ استعمال خ لفاصل حقل الإدخال (قيمة FS المتغير المحدد مسبقا).

-الخامس فار = فال

--تعيين فار = فال تعيين القيمة فال للمتغير فار قبل بدء تنفيذ البرنامج. هذه القيم المتغيره متاحة لل ابدأ كتلة من برنامج AWK.

-F ملف البرنامج

--ملف ملف البرنامج اقرأ مصدر برنامج AWK من الملف ملف البرنامج ، بدلا من وسيطة سطر الأوامر الأولى. مضاعف -F (أو --ملف) يمكن استخدام الخيارات.

-mf NNN

-السيد NNN تعيين حدود الذاكرة المختلفة إلى القيمة NNN . ال F يحدد الحد الأقصى لعدد الحقول ، و ص يحدد العلم الحد الأقصى لحجم السجل. هذان الأعلام و -m الخيار من إصدار أبحاث مختبرات Bell من UNIX AWK . يتم تجاهلها من قبل البله ، منذ البله ليس لديه حدود محددة مسبقا.

-W متوافق

-W التقليدية

--compat

--تقليدي ركض التوافق الوضع. في وضع التوافق ، البله يتصرف بشكل مماثل ل UNIX AWK . لا يتم التعرف على أي من ملحقات GNU الخاصة. استخدام --تقليدي هو المفضل على الأشكال الأخرى من هذا الخيار. نرى إمتدادات GNU، أدناه ، لمزيد من المعلومات.

دبليو الحقوق المتروكة

دبليو حقوق التأليف والنشر

--copyleft

--حقوق النشر قم بطباعة نسخة قصيرة من رسالة معلومات حقوق النشر الخاصة بـ GNU على المخرجات القياسية والخروج بنجاح.

-مفاتيح تفريغ المتغيرات= ملف

المتغيرات---dump= ملف طباعة قائمة مرتبة للمتغيرات العالمية وأنواعها والقيم النهائية لها ملف . إذا لا ملف متوفر، البله يستخدم ملف مسمى awkvars.out في الدليل الحالي.

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

-W مساعدة

-W الاستخدام

--مساعدة

--usage اطبع ملخصًا مختصرًا عن الخيارات المتاحة على المخرج القياسي. (لكل معايير جنو الترميز هذه الخيارات تتسبب في خروج فوري وناجح.)

- الوبر= قاتلة

--lint= قاتلة تقديم تحذيرات حول بنيات مشكوك فيها أو غير المحمولة إلى تطبيقات otherAWK. مع حجة اختيارية من قاتلة - مهلك، تحذيرات الوبر تصبح أخطاء قاتلة. قد يكون هذا جذريًا ، لكن استخدامه سيشجع بالتأكيد تطوير برامج AWK الأنظف.

-W الوبر القديم

--lint من العمر تقديم تحذيرات حول التركيبات غير المحمولة إلى الإصدار الأصلي من Unix AWK .

-W gen-po

--gen بو مسح و تحليل برنامج AWK ، وتوليد جنو .po تنسيق الملف على الإخراج القياسي مع إدخالات لجميع السلاسل القابلة للترجمة في البرنامج. البرنامج نفسه لم ينفذ. انظر جنو الحصول على النص توزيع لمزيد من المعلومات على .po الملفات.

-W البيانات غير العشرية

--non عشري البيانات التعرف على القيم الثمانية والسادسة عشرية في بيانات الإدخال. استخدم هذا الخيار بحذر شديد!

-و posix

--posix هذا يتحول التوافق الوضع ، مع القيود الإضافية التالية:

*

س تسلسل الهروب غير معترف بها.

*

تعمل المساحة والعلامات فقط كفواصل حقلية عندما FS تم تعيينه على مساحة واحدة ، لا.

*

لا يمكنك متابعة الخطوط بعد ? و :.

*

المرادف ظائفها للكلمة الرئيسية وظيفة غير معترف بها.

*

المشغلين ** و **= لا يمكن استخدامها بدلا من ^ و ^=.

*

ال fflush () الوظيفة غير متوفرة.

-W التعريف= prof_file

--الملف الشخصي= prof_file إرسال البيانات التنميط ل prof_file . الافتراضي هو awkprof.out. عند تشغيل مع البله ، الملف الشخصي هو مجرد نسخة "جميلة مطبوعة" من البرنامج. عند تشغيل مع pgawk ، يحتوي ملف التعريف على عدد التنفيذ لكل جملة في البرنامج في الهامش الأيسر وتعداد المكالمة الوظيفية لكل وظيفة معرفة من قبل المستخدم.

-w إعادة الفاصل

--re الفاصل الزمني تمكين استخدام تعبيرات الفواصل في مطابقة التعبير العادي (انظر التعبيرات العادية، أدناه). لم تكن التعبيرات الفاصلة متاحة بشكل تقليدي في لغة AWK. وأضاف معيار POSIX لهم ، لجعل AWK و egrep يتفق مع بعضها البعض. ومع ذلك ، فإن استخدامها من المرجح أن يكسر برامج AWK القديمة ، لذلك البله يوفر لهم فقط إذا طلبوا مع هذا الخيار ، أو متى --posix محدد.

مصدر -W برنامج نص

--مصدر برنامج نص استعمال برنامج نص كرمز مصدر برنامج AWK. يسمح هذا الخيار بالخلط السهل بين وظائف المكتبة (المستخدمة عبر -F و --ملف خيارات) مع شفرة المصدر دخلت على سطر الأوامر. وهو مخصص في المقام الأول لبرامج AWK المتوسطة إلى الكبيرة المستخدمة في نصوص القشرة.

-W الإصدار

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

-- إشارة نهاية الخيارات. وهذا مفيد للسماح بمزيد من الحجج لبرنامج AWK نفسه لبدء "` - ". هذا بشكل أساسي من أجل التناسق مع اتفاقية تحليل الوسيطة المستخدمة من قبل معظم برامج POSIX الأخرى.

في وضع التوافق ، يتم وضع علامة على أي خيارات أخرى على أنها غير صالحة ، ولكن يتم تجاهلها بطريقة أخرى. في التشغيل العادي ، طالما تم توفير نص البرنامج ، يتم تمرير خيارات غير معروفة إلى برنامج AWK في ARGV مجموعة للمعالجة. هذا مفيد بشكل خاص لتشغيل برامج AWK من خلال آلية الترجمة الفورية "# #".

AWK برنامج التنفيذ

يتكون برنامج AWK من سلسلة من عبارات إجراءات النمط وتعريفات الدالة الاختيارية.

نمط { تصريحات العمل }وظيفة اسم ( قائمة المعلمة ) { صياغات }

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

متغير البيئة AWKPATH يحدد مسار بحث لاستخدامه عند ايجاد ملفات المصدر بالاسم -F اختيار. إذا كان هذا المتغير غير موجود ، فإن المسار الافتراضي هو": / البيرة / المحلية / مشاركة / AWK". (قد يختلف الدليل الفعلي ، بناءً على الكيفية البله تم إنشاء وتثبيتها.) إذا كان اسم ملف معين إلى -F يحتوي الخيار على حرف `'/' '، ولا يتم إجراء بحث عن مسار.

البله ينفذ برامج AWK بالترتيب التالي. أولا ، جميع المهام المتغيرة المحددة عن طريق -الخامس يتم تنفيذ الخيار. التالى، البله يجمع البرنامج في شكل داخلي. ثم، البله ينفذ الكود في ابدأ block (s) (إن وجد) ، ثم يتابع قراءة كل ملف مسمى في ARGV مجموعة مصفوفة. إذا لم تكن هناك ملفات مسماة على سطر الأوامر ، البله يقرأ المدخلات القياسية.

إذا كان اسم ملف في سطر الأوامر يحتوي على النموذج فار = فال يتم معاملته كمهمة متغيرة. المتغير فار سيتم تعيين القيمة فال . (هذا يحدث بعد أي ابدأ تم تشغيل block (s).) يعتبر تخصيص متغير سطر الأوامر مفيدًا للغاية لتعيين القيم ديناميكيًا للمتغيرات التي يستخدمها AWK للتحكم في كيفية تقسيم الإدخال إلى الحقول والسجلات. من المفيد أيضًا التحكم في الحالة إذا كانت هناك حاجة إلى عدة تمريرات عبر ملف بيانات واحد.

إذا كانت قيمة عنصر معين من ARGV فارغ (''), البله يتخطى ذلك.

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

أخيرًا ، بعد استنفاد جميع المدخلات ، البله ينفذ الكود في النهاية كتلة (ق) (إن وجدت).

المتغيرات والسجلات والحقول

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

تسجيل

عادة ، يتم فصل السجلات بواسطة أحرف السطر الجديد. يمكنك التحكم في كيفية فصل السجلات عن طريق تعيين قيم للمتغير المضمن RS. إذا RS أي حرف مفرد ، تفصل هذه الأحرف السجلات. غير ذلك، RS هو تعبير عادي. يفصل النص في المدخلات التي تطابق هذا التعبير العادي السجل. ومع ذلك ، في وضع التوافق ، يتم استخدام أول حرف من قيمة السلسلة الخاصة به لفصل السجلات. إذا RS يتم تعيينها إلى سلسلة فارغة ، ثم يتم فصل السجلات بواسطة أسطر فارغة. متى RS يتم تعيينها إلى سلسلة فارغة ، يعمل حرف السطر الجديد دائمًا كفاصل للحقل ، بالإضافة إلى أي قيمة FS قد يملك.

مجالات

نظرًا لقراءة كل سجل إدخال ، البله يقسم السجل إلى مجالات باستخدام قيمة FS متغير كفاصل المجال. إذا FS هو حرف واحد ، يتم فصل الحقول بواسطة هذا الحرف. إذا FS هي سلسلة فارغة ، ثم يصبح كل حرف فردي مجالًا منفصلاً. غير ذلك، FS من المتوقع أن يكون تعبيرًا عاديًا تمامًا. في حالة خاصة ذلك FS هي مساحة واحدة ، يتم فصل الحقول عن طريق تشغيل المسافات و / أو علامات الجدولة و / أو الخطوط الجديدة. (ولكن انظر مناقشة --posix، أدناه). ملحوظة: قيمة ال IGNORECASE (انظر أدناه) يؤثر أيضا على كيفية تقسيم الحقول عندما FS هو تعبير عادي ، وكيف يتم فصل السجلات متى RS هو تعبير عادي.

إذا كان FIELDWIDTHS تم تعيين متغير إلى قائمة أرقام مفصولة بمسافة ، ومن المتوقع أن يكون لكل حقل عرض ثابت ، و البله يقسم السجل باستخدام العروض المحددة. قيمة ال FS يتم تجاهلها. تعيين قيمة جديدة ل FS يتجاوز استخدام FIELDWIDTHSواستعادة السلوك الافتراضي.

قد تتم الإشارة إلى كل حقل في سجل الإدخال من خلال موضعه ، $1, $2، وما إلى ذلك وهلم جرا. $0 هو السجل كله. لا يجب الإشارة إلى الحقول بواسطة الثوابت:

ن = 5اطبع $ n

يطبع الحقل الخامس في سجل الإدخال.

المتغير NF يتم تعيينه على العدد الإجمالي للحقول في سجل الإدخال.

تشير إلى الحقول غير الموجودة (أي الحقول بعد $ NF) إنتاج سلسلة فارغة. ومع ذلك ، يتم تعيين حقل غير موجود (على سبيل المثال ، $ (NF + 2) = 5) يزيد من قيمة NFينشئ أي حقول متداخلة مع سلسلة فارغة كقيمة ، ويتسبب في قيمة $0 يعاد حسابه ، مع فصل الحقول بقيمة OFS. تؤدي المراجع إلى الحقول المرقمة سالبة إلى حدوث خطأ فادح. Decrementing NF يتسبب في قيم الحقول بعد القيمة الجديدة المراد فقدانها وقيمة $0 يعاد حسابه ، مع فصل الحقول بقيمة OFS.

يؤدي تعيين قيمة إلى حقل موجود إلى إعادة إنشاء السجل بالكامل عند $0 يشار إليها. بالمثل ، تعيين قيمة ل $0 يؤدي السجل إلى resplit إنشاء قيم جديدة للحقول.

متغيرات مدمجة

البله المتغيرات المضمنة هي:

ARGC

عدد وسائط سطر الأوامر (لا تتضمن خيارات لـ البله أو مصدر البرنامج).

ARGIND

المؤشر في ARGV من الملف الحالي قيد المعالجة.

ARGV

مجموعة من الحجج سطر الأوامر. المصفوفة مفهرسة من 0 إلى ARGC - 1. تغيير محتويات Dynamically ARGV يمكن التحكم في الملفات المستخدمة للبيانات.

BINMODE

في أنظمة غير POSIX ، يحدد استخدام الوضع '' ثنائي '' لكل ملف الإدخال / الإخراج. القيم الرقمية 1 أو 2 أو 3 ، تحديد أن ملفات الإدخال أو ملفات الإخراج أو كافة الملفات ، على التوالي ، يجب أن تستخدم الإدخال / الإخراج الثنائي. قيم السلسلة "ص"أو "ث" تحديد أن ملفات الإدخال ، أو ملفات الإخراج ، على التوالي ، يجب أن تستخدم ثنائية I / O. قيم السلسلة "RW" أو "WR" تحديد أن جميع الملفات يجب أن تستخدم ثنائية I / O. أي قيمة سلسلة أخرى تعامل على أنها "RW"، ولكن يولد رسالة تحذير.

CONVFMT

تنسيق التحويل للأرقام ، "٪ .6g"، بشكل افتراضي.

ENVIRON

مصفوفة تحتوي على قيم البيئة الحالية. يتم فهرسة المصفوفة من خلال متغيرات البيئة ، كل عنصر يمثل قيمة هذا المتغير (على سبيل المثال ،ENVIRON "الوطن" قد يكون / الوطن / أرنولد). لا يؤثر تغيير هذا المصفوفة على البيئة التي تشاهدها البرامج البله يفرخ عن طريق إعادة التوجيه أو النظام()وظيفة.

ERRNO

في حالة حدوث خطأ في النظام إما إجراء إعادة توجيه لـ الحصول على خطخلال القراءة الحصول على خطأو خلال أغلق()، ثم ERRNO سيحتوي على سلسلة تصف الخطأ. القيمة تخضع للترجمة في لغات غير الإنجليزية.

FIELDWIDTHS

قائمة بيضاء مساحة منفصلة من الحقول. عند الضبط ، البله يوزع الإدخال في الحقول ذات العرض الثابت ، بدلاً من استخدام قيمة FS متغير كفاصل المجال.

اسم الملف

اسم ملف الإدخال الحالي.إذا لم يتم تحديد أي ملفات في سطر الأوامر ، فإن قيمة اسم الملف هو "` - ". ومع ذلك، اسم الملف غير معرف داخل ابدأ كتلة (ما لم يحددها الحصول على خط).

FNR

رقم سجل الإدخال في ملف الإدخال الحالي.

FS

فاصل حقل الإدخال ، مساحة افتراضياً. نرى مجالات، في الاعلى.

IGNORECASE

يتحكم في حساسية الحالة لجميع عمليات التعبير العادي والصفري. إذا IGNORECASE لديه قيمة غير صفرية ، ثم مقارنات السلسلة ومطابقة النمط في القواعد ، مع تقسيم المجال FSسجل مع فصل RS، مطابقة التعبير العادي مع ~و !~، و ال gensub (), gsub (), فهرس(), مباراة(), انشق، مزق()و الفرعية() وظائف مدمجة في تجاهل كل حالة عند القيام بعمليات التعبير العادية. ملحوظة: تصنيف المصفوفة هو ليس المتضررة ، ولا هو asort () وظيفة.

هكذا ، إذا IGNORECASE لا يساوي الصفر ، / AB / يطابق كل السلاسل "أ ب", "AB","أب"و "AB". كما هو الحال مع جميع المتغيرات AWK ، فإن القيمة الأولية ل IGNORECASE هو صفر ، لذلك تكون جميع عمليات التعبير العادي والصفيف حساسة لحالة الأحرف. تحت يونيكس ، يتم استخدام مجموعة الأحرف الكاملة ISO 8859-1 Latin-1 عند تجاهل الحالة.

لينت

يوفر تحكم ديناميكي من --lint الخيار من داخل برنامج AWK. عندما يكون صحيحا ، البله يطبع تحذيرات الوبر. عندما خاطئة ، لا. عند تعيين قيمة السلسلة "قاتلة - مهلك"تصبح تحذيرات الوبر أخطاء مميتة ، تماما مثل --lint = قاتلة. أي قيمة حقيقية أخرى تطبع تحذيرات فقط.

NF

عدد الحقول في سجل الإدخال الحالي.

NR

العدد الإجمالي لسجلات الإدخال التي تمت رؤيتها حتى الآن.

OFMT

تنسيق الإخراج للأرقام ، "٪ .6g"، بشكل افتراضي.

OFS

فاصل حقل الإخراج ، مساحة افتراضياً.

ORS

فاصل سجل الإخراج ، بشكل افتراضي سطر جديد.

PROCINFO

توفر عناصر هذه المجموعة الوصول إلى المعلومات حول برنامج AWK قيد التشغيل. في بعض الأنظمة ، قد تكون هناك عناصر في الصفيف ، "مجموعة 1" عبر "مجموعة ن ' للبعض ن ، وهو عدد المجموعات التكميلية التي تحتوي عليها العملية. استخدم ال في عامل اختبار لهذه العناصر. العناصر التالية مضمونة لتكون متاحة:

PROCINFO "EGID"

قيمة getegid (2) استدعاء النظام.

PROCINFO "euid"

قيمة geteuid (2) استدعاء النظام.

PROCINFO "FS"

"FS" إذا تقسيم المجال مع FS في الواقع ، أو "FIELDWIDTHS" إذا تقسيم المجال مع FIELDWIDTHS هو في الواقع.

PROCINFO "دائرة المخابرات العامة"

قيمة getgid (2) استدعاء النظام.

PROCINFO "pgrpid"

معرف مجموعة العملية الخاصة بالعملية الحالية.

PROCINFO "معرف المنتج"

معرف العملية الخاص بالعملية الحالية.

PROCINFO "ppid"

معرف العملية الأصل للعملية الحالية.

PROCINFO "رمز المستخدم"

قيمة getuid (2) استدعاء النظام.

RS

فاصل سجل الإدخال ، افتراضيًا سطر جديد.

RT

سجل المنهي. البله موعات RT إلى نص الإدخال الذي يطابق الحرف أو التعبير العادي المحدد بواسطة RS.

RSTART

فهرس الحرف الأول متطابق مع مباراة(). 0 في حالة عدم وجود تطابق. (وهذا يعني أن مؤشرات الشخصيات تبدأ من واحد.)

RLENGTH

طول السلسلة المطابقة بواسطة مباراة(). -1 إذا لم تكن هناك مباراة.

SUBSEP

الحرف المستخدم للفصل بين عدة علامات فرعية في عناصر الصفيف ، بشكل افتراضي ' 034'.

TEXTDOMAIN

المجال النصي لبرنامج AWK ؛ تستخدم للعثور على الترجمات المترجمة لسلاسل البرنامج.

المصفوفات

يتم إقران المصفوفات مع تعبير بين قوسين مربعين ( و ). إذا كان التعبير عبارة عن قائمة تعبير ( EXPR , EXPR …) إذا كان مصفوفة الصفيف عبارة عن سلسلة تتكون من سلسلة القيمة (سلسلة) لكل تعبير ، مفصولة بقيمة SUBSEP متغير. يستخدم هذا المرفق لمحاكاة صفائف الأبعاد المتعددة. فمثلا:

أنا = "أ" ؛ j = "B" k = "C"x i، j، k = "hello، world n"

يعين السلسلة "مرحبًا ، بالعالم n" إلى عنصر المصفوفة س والذي تتم فهرسته بواسطة السلسلة"A 034B 034C". جميع المصفوفات في AWK مرتبطة ، أي مفهرسة حسب قيم السلسلة.

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

إذا كانت صفيف (val in array) طباعة val

إذا كان الصفيف يحتوي على عدد من المقتطفات المتعددة ، فاستخدم (ط ، ي) في مجموعة.

ال في بناء يمكن أيضا أن تستخدم في إلى عن على تكرار للتكرار على جميع عناصر المصفوفة.

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

الكتابة المتغيرة والتحويل

قد تكون المتغيرات والحقول (أرقام عائمة) أرقام ، أو سلاسل ، أو كليهما. تعتمد كيفية تفسير قيمة المتغير على السياق الخاص به. إذا تم استخدامها في تعبير رقمي ، فسيتم التعامل معها كرقم ، إذا تم استخدامها كسلسلة سيتم التعامل معها كسلسلة.

لفرض متغير ليتم التعامل معه كرقم ، أضف 0 إليه ؛ لإجباره على أن يعامل كسلسلة ، سلسلته مع سلسلة فارغة.

عندما يجب تحويل سلسلة إلى رقم ، يتم إجراء التحويل باستخدام strtod (3). يتم تحويل رقم إلى سلسلة باستخدام قيمة CONVFMT كسلسلة تنسيق ل sprintf (3) ، مع القيمة الرقمية للمتغير كوسيطة. ومع ذلك ، على الرغم من أن جميع الأرقام في AWK هي نقطة عائمة ، فإن القيم المتكاملة دائما تحويلها كأعداد صحيحة. هكذا ، نظرا

CONVFMT = "٪ 2.2f" a = 12 b = a ""

المتغير ب لديه قيمة سلسلة من '12' و لا '12.00'.

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

لاحظ أن ثوابت السلسلة ، مثل '57'هي كذلك ليس سلاسل رقمية ، فهي ثوابت سلسلة. تنطبق فكرة "السلسلة الرقمية" على الحقول فقط ، الحصول على خط إدخال، اسم الملف, ARGV عناصر، ENVIRON عناصر وعناصر صفيف إنشاؤها بواسطة انشق، مزق() هي سلاسل رقمية. الفكرة الأساسية هي إدخال المستخدم ، ويجب أن يتم التعامل مع إدخال المستخدم فقط ، الذي يبدو رقميًا ، بهذه الطريقة.

لدى المتغيرات غير مهيأة القيمة الرقمية 0 وقيمة السلسلة "" (سلسلة فارغة أو فارغة).

الثوابت الثماني والسادسة

بدءا من الإصدار 3.1 من جوك يمكنك استخدام الثوابت الثمانية والسادسة عشر النمطية النمط C في التعليمات البرمجية المصدر البرنامج AWK. على سبيل المثال ، القيمة الثمانية 011 يساوي العشرية 9والقيمة الست عشرية 0x11 يساوي العشرية 17.

ثوابت السلسلة

ثوابت السلسلة في AWK هي سلاسل من الحروف المغلقة بين علامات الاقتباس المزدوجة ('). داخل السلاسل ، معينة تسلسلات الهروب معترف بها ، كما هو الحال في C.

\

حرف مائل عكسي.

ا

الحرف "تنبيه"؛ عادة ما يكون حرف ASCII BEL.

ب

مسافة للخلف.

F

نموذج تغذية.

ن

خط جديد.

ص

إرجاع.

ر

مساحة أفقية.

الخامس

علامة التبويب العمودية.

س أرقام سداسية

الحرف الذي يمثله سلسلة من الأرقام السداسية العشرية التالية س. كما هو الحال في ANSIC ، تعتبر جميع الأرقام الست عشرية التالية جزءًا من تسلسل الهروب. (هذه الميزة يجب أن تخبرنا بشيء عن تصميم اللغة من قبل اللجنة.) على سبيل المثال ، " x1B" هو حرف ASCIIESC (الهروب).

DDD

الحرف الذي يمثله التسلسل 1 أو 2 أو 3 أرقام من الأرقام الثمانية. على سبيل المثال، ' 033' هو الحرف ASCII ESC (الهروب).

ج

الشخصية الحرفية ج .

يمكن أيضًا استخدام تسلسلات الهروب داخل التعبيرات العادية الثابتة (على سبيل المثال ،/ t f n r v / يطابق المسافات البيضاء).

في وضع التوافق ، يتم التعامل مع الأحرف الممثلة بتسلسل الهروب الثماني وعشريًا حرفياً عند استخدامها في ثوابت التعبير العادي. وهكذا، / أ 52B / ما يعادل/ أ * ب /.

الأنماط والإجراءات

AWK هي لغة خطية المنحى. يأتي النمط أولاً ثم الإجراء. يتم تضمين عبارات الإجراء في { و }. قد يكون النموذج مفقودًا ، أو ربما يكون الإجراء مفقودًا ، ولكن ليس كلاهما بالطبع. إذا كان النمط مفقودًا ، فسيتم تنفيذ الإجراء لكل سجل إدخال فردي. الإجراء المفقود يساوي

{طباعة}

الذي يطبع السجل بأكمله.

تبدأ التعليقات بالحرف `` # ، وتستمر حتى نهاية السطر. يمكن استخدام خطوط فارغة لفصل العبارات. عادة ما ينتهي البيان بخط جديد ، ومع ذلك ، ليس هذا هو الحال بالنسبة للخطوط المنتهية في `` ، '، {, ?, :, &&أو ||. خطوط تنتهي في فعل أو آخر أيضا قد تستمر تصريحاتهم تلقائيا على السطر التالي. في حالات أخرى ، يمكن الاستمرار في سطر ما بإنهائه بـ "، وفي هذه الحالة سيتم تجاهل السطر الجديد.

قد يتم وضع عبارات متعددة على سطر واحد عن طريق فصلها مع `` ؛ ''. وينطبق هذا على كلٍّ من العبارات الموجودة في جزء الإجراء في زوج عمل التصرف (الحالة المعتادة) ، وعلى عبارات إجراء النمط نفسها.

أنماط - رسم

قد تكون أنماط AWK واحدة مما يلي:

ابدأ النهاية / تعبير عادي / التعبير العلائقي نمط && نمط نمط || نمط نمط ? نمط : نمط ( نمط ) ! نمط pattern1 , pattern2

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

إلى عن على / تعبير عادي / أنماط ، يتم تنفيذ العبارة المرتبطة لكل سجل الإدخال الذي يطابق التعبير العادي. التعبيرات العادية هي نفسها كتلك الموجودة في egrep (1) ، ويتم تلخيصها أدناه.

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

ال &&, ||و ! المشغلين منطقية و ، منطقية أو ، و منطقية NOT ، على التوالي ، كما هو الحال في C. يقومون بتقييم ماس كهربائى ، كما هو الحال في C ، ويتم استخدامها لتجميع تعبيرات نمط بدائية أكثر. كما هو الحال في معظم اللغات ، يمكن استخدام الأقواس لتغيير ترتيب التقييم.

ال ?: المشغل يشبه نفس المشغل في C. إذا كان النمط الأول صحيحًا ، فإن النمط المستخدم للاختبار هو النمط الثاني ، وإلا فهو الثالث. يتم تقييم واحد فقط من الأنماط الثاني والثالث.

ال pattern1 , pattern2 شكل من أشكال التعبير يسمى أ نمط المدى . وهو يطابق جميع سجلات الإدخال بدءًا بسجل يطابق pattern1 ، والمستمر حتى السجل الذي يطابق pattern2 ، شاملة. لا يتحد مع أي نوع آخر من تعبير النمط.

التعبيرات العادية

التعبيرات العادية هي النوع الممتد الموجود في egrep . تتكون من شخصيات على النحو التالي:

ج

يتطابق مع غير الحرف الأولي ج .

ج

يطابق الحرف الحرفي ج .

.

يطابق أي شخصية بما فيها خط جديد.

^

يطابق بداية سلسلة.

$

يطابق نهاية سلسلة.

اي بي سي …

قائمة الشخصيات ، تتطابق مع أي من الشخصيات اي بي سي … .

^ اي بي سي …

قائمة الأحرف المنسية ، تتطابق مع أي حرف باستثناء اي بي سي … .

R1 | R2

التناوب: تطابق إما R1 أو R2 .

r1r2

تسلسل: مباريات R1 ، وثم R2 .

ص +

يطابق واحد أو أكثر ص الصورة.

ص *

يطابق الصفر أو أكثر ص الصورة.

ص ?

يطابق الصفر أو واحد ص الصورة.

( ص )

التجمع: مباريات ص .

ص { ن }

ص { ن ,}

ص { ن , م } واحد أو رقمين داخل الأقواس تدل على تعبير الفاصل . إذا كان هناك رقم واحد في الأقواس ، فإن التعبير العادي السابق ص مكرر ن مرات. إذا كان هناك رقمان مفصولان بفاصلة ، ص مكرر ن إلى م مرات. إذا كان هناك رقم واحد متبوعًا بفاصلة ، فيمكنك ذلك ص يتكرر على الأقل ن مرات.

تعبيرات الفواصل الزمنية متاحة فقط في حالة أي منهما --posix أو --re الفاصل الزمني محدد في سطر الأوامر.

ص

يطابق السلسلة الفارغة في بداية الكلمة أو نهايتها.

ب

يطابق السلسلة الفارغة داخل الكلمة.

<

يطابق السلسلة الفارغة في بداية الكلمة.

>

يطابق السلسلة الفارغة في نهاية الكلمة.

ث

يتطابق مع أي حرف مكون من كلمة (حرف ، أو رقم ، أو شرطة سفلية).

W

يطابق أي حرف ليس مكونًا الكلمة.

`

يطابق السلسلة الفارغة في بداية المخزن المؤقت (سلسلة).

'

يطابق السلسلة الفارغة في نهاية المخزن المؤقت.

تسلسلات الهروب الصالحة في ثوابت السلسلة (انظر أدناه) صالحة أيضًا في التعبيرات العادية.

فئات الشخصيات هي ميزة جديدة يتم تقديمها في معيار POSIX. فئة الحرف هي تدوين خاص لوصف قوائم الأحرف التي لها سمة معينة ، ولكن عندما تختلف الأحرف الفعلية نفسها من بلد إلى آخر و / أو من مجموعة الأحرف إلى مجموعة الأحرف. على سبيل المثال ، يختلف مفهوم ما هو حرف أبجدي في الولايات المتحدة الأمريكية وفي فرنسا.

فئة الحرف صالحة فقط في التعبير العادي في داخل بين قوسين من قائمة الشخصيات. تتكون فئة الأحرف من :، كلمة رئيسية تدل على الفئة ، و :. فئات الحرف التي يحددها معيار POSIX هي:

: alnum:

أحرف أبجدية رقمية.

:ألفا:

الأحرف الأبجدية.

: فارغة:

الفضاء أو علامة التبويب الأحرف.

: CNTRL:

أحرف التحكم.

: الرقم:

الحروف الرقمية.

:رسم بياني:

الأحرف التي يمكن طباعتها ومرئية. (المساحة قابلة للطباعة ، ولكنها غير مرئية ، في حين أن ا كلاهما.)

:خفض:

الأحرف الأبجدية ذات الأحرف الصغيرة.

:طباعة:

الأحرف القابلة للطباعة (الأحرف التي لا تكون أحرف التحكم.)

: PUNCT:

أحرف الترقيم (الأحرف غير الحرف ، أو الأرقام ، أو أحرف التحكم ، أو أحرف المسافات).

:الفراغ:

أحرف الفضاء (مثل المسافة ، وعلامة التبويب ، و formfeed ، على سبيل المثال لا الحصر).

: العلوي:

الحروف الأبجدية العليا

: xdigit:

الحروف التي هي أرقام سداسية عشرية.

على سبيل المثال ، قبل معيار POSIX ، لمطابقة الأحرف الأبجدية الرقمية ، كان عليك الكتابة / A-ي0-9 /. إذا كانت مجموعة الأحرف الخاصة بك تحتوي على أحرف أبجدية أخرى ، فهذا لا يتطابق معها ، وإذا كانت مجموعة الأحرف الخاصة بك تم تجميعها بشكل مختلف عن ASCII ، فقد لا يتطابق ذلك مع حروف ASCII الأبجدية الرقمية. مع فصول شخصية POSIX ، يمكنك الكتابة/ : alnum: /، وهذا يتطابق مع الأحرف الأبجدية والرقمية في مجموعة الأحرف الخاصة بك.

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

تجميع الرموز

رمز التجميع هو عنصر تجميع متعدد الرموز مُحاط به . و .. على سبيل المثال ، إذا الفصل هو عنصر تجميع ، ثم .ch. هو تعبير عادي يتطابق مع عنصر المقارنة هذا ، بينما الفصل هو تعبير عادي يطابق أي منهما ج أو ح.

فئات التكافؤ

فئة التكافؤ هي اسم خاص بالإعدادات المحلية لقائمة بالأحرف المكافئة. الاسم محاط به = و =. على سبيل المثال ، الاسم البريد قد يتم استخدامه لتمثيل كل من "e" و "" و "e" و "" و "` e "." في هذه الحالة ، = ه = هو تعبير عادي يتطابق مع أي من البريد, ه 'أو e`.

هذه الميزات ذات قيمة كبيرة في اللغات غير الناطقة باللغة الإنجليزية. وظائف المكتبة ذلك البله تستخدم مطابقة التعبير العادي حاليًا فقط فئات الأحرف POSIX ؛ لا يعترفون برموز التجميع أو فصول التكافؤ.

ال ص, ب, <, >, ث, W, `و ' المشغلين محددة ل البله . وهي ملحقات تستند إلى التسهيلات في مكتبات تعبير GNU العادية.

تتحكم خيارات سطر الأوامر المختلفة في كيفية ذلك البله يفسر الحروف في التعبيرات العادية.

لا يوجد خيارات

في الحالة الافتراضية ، البله توفير جميع مرافق تعبيرات POSIX العادية وعوامل تعبير GNU العادية الموضحة أعلاه. ومع ذلك ، لا يتم دعم التعبيرات الفاصلة.

--posix

يتم دعم تعبيرات POSIX العادية فقط ، لكن مشغلي جنو ليسوا مميزين. (على سبيل المثال، ث يطابق حرفيا ث). مسموح بالتعابير الفاصلة.

--تقليدي

يونيكس التقليدي AWK يتم مطابقة التعابير العادية. مشغلي جنو ليسوا مميزين ، ولا تتوفر تعبيرات فاصلة ، ولا هي فئات حروف POSIX (: alnum: وما إلى ذلك وهلم جرا). يتم التعامل مع الأحرف التي تم وصفها بتسلسل الهروب الثماني وعشريًا حرفيًا ، حتى إذا كانت تمثل أحرفًا استهلالية عادية للتعبير.

--re الفاصل الزمني

السماح بالتعبيرات الفاصلة في التعبيرات العادية ، حتى لو كانت --تقليدي تم اعطائها.

أفعال

يتم تضمين عبارات العمل في أقواس ، { و }. تتكون عبارات الإجراء من التعيينات المعتادة ، والشرطية ، وبيانات التكرار الموجودة في معظم اللغات. يتم تشفير عوامل التشغيل وكشوف التحكم وبيانات الإدخال / الإخراج المتوفرة بعد تلك الموجودة في C.

العاملين

المشغلين في AWK ، من أجل تناقص الأسبقية ، هي

()

تجمع

$

المرجع الميداني.

++ --

زيادة وإنقاص ، كل من البادئة و postfix.

^

الأسي (** يمكن أن تستخدم أيضا ، و **= لمشغل المهمة).

+ - !

Unary plus ، unular ناقص ، ونفي منطقي.

* / %

الضرب والقسمة والمعامل.

+ -

جمع وطرح.

الفراغ

سلسلة السلاسل.

< >

<= >=

!= == مشغلي العلائقية العادية.

~ !~

مطابقة التعبير العادي ، المطابقة السلبية. ملحوظة: لا تستخدم تعبيرًا منتظمًا ثابتًا (/ فو /) على الجانب الأيسر من ~ أو !~. استخدم فقط واحدة على الجانب الأيمن. التعبير / foo / ~ إكسب له نفس المعنى (($ 0 ~ / foo /) ~ إكسب ). هذا هو عادة ليس ما كان المقصود.

في

عضوية صفيف.

&&

منطقي و.

||

منطقية أو.

?:

التعبير الشرطي C. هذا له الشكل expr1 ? expr2 : expr3 . إذا expr1 صحيح ، قيمة التعبير هي expr2 ، وإلا فهو كذلك expr3 . واحد فقط من expr2 و expr3 تم التقييم.

= += -=

*= /= %= ^= مهمة. كلا الواجب المطلق ( فار = القيمة ) وتعيين عامل المشغل (الأشكال الأخرى) معتمدة.

بيانات التحكم

تكون عبارات التحكم كما يلي:

إذا ( شرط ) بيان آخر بيان في حين ( شرط ) بيان فعل بيان في حين ( شرط ) إلى عن على ( expr1 ; expr2 ; expr3 ) بيان إلى عن على ( فار في مجموعة مصفوفة ) بيان استراحة استمر حذف مجموعة مصفوفة فهرس حذف مجموعة مصفوفة ىخرج التعبير { صياغات }

بيانات I / O

بيانات الإدخال / الإخراج كالتالي:

أغلق( ملف , ماذا )

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

الحصول على خط

جلس $0 من سجل الإدخال التالي ؛ جلس NF, NR, FNR.

getline < ملف

جلس $0 من السجل القادم من ملف . جلس NF.

الحصول على خط فار

جلس فار من سجل الإدخال التالي ؛ جلس NR, FNR.

الحصول على خط فار < ملف

جلس فار من السجل القادم من ملف .

أمر | الحصول على خط فار

يركض أمر piping الإخراج إما في $0 أو فار ، على النحو الوارد أعلاه.

أمر | & getline فار

يركض أمر كأنها عملية مشتركة الأنابيب الإخراج إما في $0 أو فار ، على النحو الوارد أعلاه. العمليات المشتركة هي البله تمديد.

التالى

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

nextfile

توقف عن معالجة ملف الإدخال الحالي. تأتي قراءة سجل الإدخال التالية من ملف الإدخال التالي. اسم الملف و ARGIND يتم تحديثها ، FNR تتم إعادة الضبط إلى 1 ، ويتم بدء المعالجة باستخدام النمط الأول في برنامج AWK. إذا تم الوصول إلى نهاية بيانات الإدخال ، فإن النهاية كتلة (ق) ، إن وجدت ، يتم تنفيذها.

طباعة

يطبع السجل الحالي. يتم إنهاء سجل الإخراج بقيمة ORS متغير.

طباعة EXPR القائمة

يطبع التعبيرات. يتم فصل كل تعبير بقيمة OFS متغير. يتم إنهاء سجل الإخراج بقيمة ORS متغير.

طباعة EXPR القائمة > ملف

يطبع التعبيرات على ملف . يتم فصل كل تعبير بق