GoGPT Best VPN GoSearch

OnWorks فافيكون

awkposix - عبر الإنترنت في السحابة

قم بتشغيل awkposix في موفر الاستضافة المجاني OnWorks عبر Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت

هذا هو الأمر awkposix الذي يمكن تشغيله في مزود الاستضافة المجانية OnWorks باستخدام إحدى محطات العمل المجانية المتعددة عبر الإنترنت مثل Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت

برنامج:

اسم


awk - مسح الأنماط ولغة المعالجة

موجز


AWK [− F. فصل] [مهمة] برنامج [حجة ]

AWK [− F. فصل] − و com.progfile [− و com.progfile] [مهمة]
[حجة ]

الوصف


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

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

إنّ كافة أنواع عهود الـ AWK يجب أن تفسر المنفعة كل سجل إدخال على أنه تسلسل من الحقول حيث وبواسطة
الافتراضي ، الحقل هو سلسلة من غير عدم- الشخصيات. هذا الافتراضي
و يمكن تغيير محدد المجال باستخدام FS المدمج في المتغير أو − F.
فصل اختيار. ال AWK يجب أن تشير المنفعة إلى الحقل الأول في سجل بقيمة $ 1 ، والثاني
2 دولار ، وهكذا. يجب أن يشير الرمز $ 0 إلى السجل بأكمله ؛ تحديد أي مجال آخر
يتسبب في إعادة تقييم 0 دولار. يؤدي التعيين إلى 0 دولار إلى إعادة تعيين قيم جميع الحقول الأخرى
و مبادئ السلوك NF متغير مدمج.

OPTIONS


إنّ كافة أنواع عهود الـ AWK يجب أن تتوافق المنفعة مع حجم التعريفات الأساسية لـ POSIX.1-2008 ، القسم
12.2, مرافق بناء الجملة التوجيهات.

يجب دعم الخيارات التالية:

− F. فصل
حدد فاصل حقل الإدخال. يجب أن يكون هذا الخيار معادلاً لما يلي:

-v خ م =فصل

ما عدا ذلك إذا − F. فصل و خ م =فصل كلاهما مستخدم ، فهو غير محدد
ما إذا كان FS التنازل الناتج عن − F. فصل تتم معالجتها في الأمر
أمر سطر أو تتم معالجته بعد الأخير خ م =فصل. انظر الوصف
ل FS المتغير المضمن وكيفية استخدامه في الوصف الموسع
والقسم الخاص به.

− و com.progfile
حدد اسم المسار للملف com.progfile تحتوي على AWK برنامج. اسم المسار
of "-" يجب أن تدل على المدخلات القياسية. إذا كانت حالات متعددة من هذا الخيار هي
المحدد ، تسلسل الملفات المحددة كـ com.progfile بالترتيب
المحدد يجب أن يكون AWK برنامج. ال AWK يمكن أن يكون البرنامج بدلاً من ذلك
المحدد في سطر الأوامر كوسيطة واحدة.

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

العمليات


يجب دعم المعاملات التالية:

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

حجة أي من النوعين التاليين من حجة يمكن خلطها:

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

مهمة
المعامل الذي يبدأ بامتداد أو حرف أبجدي
من مجموعة الأحرف المحمولة (انظر الجدول في التعريفات الأساسية
حجم POSIX.1‐2008 ، القسم 6.1, المحمول حرف بكج)، يتبع
من خلال سلسلة من الشرطات السفلية والأرقام والأبجدية من
مجموعة الأحرف المحمولة ، متبوعة بملحق '=' الطابع ، يجب أن تحدد أ
إسناد متغير بدلاً من اسم مسار. الشخصيات قبل
'=' تمثل اسم AWK عامل؛ إذا كان هذا الاسم هو AWK
كلمة محجوزة (انظر قواعد) السلوك غير محدد. الشخصيات
بعد يجب أن تفسر كما لو ظهرت
في AWK برنامج يسبقه ويتبعه اقتباس مزدوج ("" ")
شخصية ، مثل أ STRING رمز (انظر قواعد) ، إلا إذا كان الأخير
شخصية لا مفر منها ، يجب أن يتم تفسيره على أنه أ
حرفي بدلا من أن يكون الحرف الأول في التسلسل
"\". يسند المتغير قيمة ذلك STRING رمز
وإذا كان ذلك مناسبًا ، يعتبر أ الرقمية سلسلة (انظر
التعبيرات in AWK) ، يجب أيضًا تعيين المتغير رقميًا
قيمة. يجب أن يحدث كل تخصيص متغير قبل
معالجة ما يلي ملف، لو اي. وهكذا ، احالة من قبل
أول ملف يجب تنفيذ الحجة بعد ابدأ الإجراءات (إذا
أي) ، أثناء التعيين بعد الأخير ملف يجب أن تحدث الحجة
أمام END الإجراءات (إن وجدت). إذا لم يكن هناك ملف الحجج،
يجب تنفيذ التخصيصات قبل معالجة الإدخال القياسي.

ستدين


يجب استخدام المدخلات القياسية فقط إذا كانت الإجابة "لا" ملف يتم تحديد المعاملات ، أو إذا كان ملف ملف
المعامل هو "-"، أو إذا أ com.progfile الخيار هو وسيطة "-"؛ راجع قسم ملفات الإدخال. لو
القادم AWK لا يحتوي البرنامج على إجراءات ولا أنماط ، ولكنه صالح بخلاف ذلك AWK برنامج
الإدخال القياسي وأي ملف لا يجوز قراءة المعاملات و AWK يجب الخروج مع العودة
حالة الصفر.

INPUT FILES


أدخل الملفات إلى ملف AWK يجب أن يكون البرنامج من أي من المصادر التالية ملفات نصية:

* أي ملف المعاملات أو ما يعادلها ، التي يتم تحقيقها عن طريق تعديل AWK المتغيرات ARGV
و ARGC

* الإدخال القياسي في حالة عدم وجود أي ملف يعامل

* الحجج إلى الحصول على خط وظيفة

ما إذا كان المتغير RS تم تعيينه على قيمة أخرى غير a أم لا ، لهذه الملفات ،
يجب أن تدعم التطبيقات السجلات المنتهية بالفاصل المحدد حتى
{LINE_MAX} بايت وقد يدعم السجلات الأطول.

If − و com.progfile محددًا ، يجب أن يضمن التطبيق أن الملفات المسماة بواسطة كل ملف
القادم com.progfile الوسيطات الاختيارية هي ملفات نصية وتسلسلها ، بنفس ترتيب ملفات
تظهر في الحجج ، هو AWK برنامج.

البيئة المتغيرات


يجب أن تؤثر متغيرات البيئة التالية على تنفيذ AWK:

لانج قم بتوفير قيمة افتراضية لمتغيرات التدويل غير المضبوطة أو
باطل. (انظر حجم التعريفات الأساسية لـ POSIX.1-2008 ، القسم 8.2,
التجارة في الخارج المتغيرات لأسبقية التدويل
المتغيرات المستخدمة لتحديد قيم الفئات المحلية.)

LC_ALL إذا تم التعيين على قيمة سلسلة غير فارغة ، فتجاوز قيم جميع القيم الأخرى
متغيرات التدويل.

LC_COLLATE
تحديد الإعدادات المحلية لسلوك النطاقات وفئات التكافؤ ومتعدد
عناصر تجميع الأحرف داخل التعبيرات النمطية وفي مقارنات
قيم السلسلة.

LC_CTYPE تحديد الإعدادات المحلية لتفسير تسلسل بايت من البيانات النصية
كأحرف (على سبيل المثال ، أحادية البايت بدلاً من أحرف متعددة البايت بتنسيق
الحجج وملفات الإدخال) ، سلوك فئات الأحرف داخل النظام العادي
التعبيرات ، وتحديد الأحرف كأحرف ، وتعيين
الأحرف الكبيرة والصغيرة لـ العلبة و أدنى الوظائف.

رسائل LC
حدد الإعدادات المحلية التي يجب استخدامها للتأثير على تنسيق ومحتويات
رسائل التشخيص المكتوبة على خطأ قياسي.

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

نلسباث تحديد موقع كتالوجات الرسائل لمعالجتها رسائل LC.

PATH حدد مسار البحث عند البحث عن الأوامر المنفذة بواسطة نظام(على سبيل المثال)، أو
أنابيب الإدخال والإخراج. راجع مجلد التعريفات الأساسية لـ POSIX.1-2008 ، باب
8, البيئة المتغيرات.

بالإضافة إلى ذلك ، يجب أن تكون جميع متغيرات البيئة مرئية عبر AWK متغير البيئة.

غير متزامن فعاليات


افتراضي.

STDOUT


تعتمد طبيعة ملفات الإخراج على ملف AWK برنامج.

ستدير


يجب استخدام الخطأ القياسي فقط لرسائل التشخيص.

OUTPUT FILES


تعتمد طبيعة ملفات الإخراج على ملف AWK برنامج.

وسعوا الوصف


أوفرول البرنامج الهيكلية
An AWK يتكون البرنامج من أزواج من النموذج:

النمط { عمل }

يمكن أن يكون النمط أو الإجراء (بما في ذلك أحرف قوس التضمين)
محذوف.

يجب أن يتطابق النمط المفقود مع أي سجل من المدخلات ، ويجب أن يكون الإجراء المفقود
أي ما يعادل:

{ طباعة }

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

التعبيرات in AWK
تصف التعبيرات الحسابات المستخدمة في أنماط و الإجراءات. في الجدول التالي ،
يتم إعطاء عمليات التعبير الصالح في مجموعات من الأسبقية الأولى إلى الأقل
الأسبقية الأخيرة ، مع عوامل الأسبقية المتساوية المجمعة بين الخطوط الأفقية. في
تقييم التعبير ، حيث تكون القواعد غامضة بشكل رسمي ، تكون الأسبقية أعلى
يجب تقييم المشغلين قبل المشغلين الأقل أسبقية. في هذا الجدول على سبيل المثال, إكسبر 1,
إكسبر 2و إكسبر 3 تمثل أي تعبير ، بينما تمثل lvalue أي كيان يمكن أن يكون
مخصص لـ (أي على الجانب الأيسر من عامل التخصيص). التركيب الدقيق لـ
التعبيرات الواردة في قواعد.

طاولات 4-1: التعبيرات in تقليل الأولوية in AWK

┌ ┌ ─ ─ ┬ ─────────────┬──────────────┐
بناء الجملةالاسمالنوع of نتيجةترابطيات
├───────────────────┼────────────── ────────┼─ ─────────────┼──────────────┤
│ ( على سبيل المثال ) │ التجميع │ نوع على سبيل المثال │N / A │
├───────────────────┼────────────── ────────┼─ ─────────────┼──────────────┤
│ $على سبيل المثال مرجع الحقل "سلسلة" N / A "
├───────────────────┼────────────── ────────┼─ ─────────────┼──────────────┤
│lvalue ++ │ بعد الزيادة │ رقمي │N / A
│lvalue −− │ ما بعد الإنقاص رقمي │N / A │
├───────────────────┼────────────── ────────┼─ ─────────────┼──────────────┤
│ ++ lvalue │ زيادة مسبقة │ رقمية N / A
│−− lvalue │ ما قبل الإنقاص رقمي │N / A
├───────────────────┼────────────── ────────┼─ ─────────────┼──────────────┤
على سبيل المثال ^ على سبيل المثال │الاستبدال رقمي حق
├───────────────────┼────────────── ────────┼─ ─────────────┼──────────────┤
│! على سبيل المثال │ منطقي ليس رقمي N / A
│ + على سبيل المثال │أحد زائد رقمي N / A
│− على سبيل المثال │ غير عادي ناقص رقمي N / A
├───────────────────┼────────────── ────────┼─ ─────────────┼──────────────┤
على سبيل المثال * على سبيل المثال │الضرب │ رقمي اليسار
على سبيل المثال / على سبيل المثال │قسم رقمي يسار
على سبيل المثال % على سبيل المثال │مودلوس │ رقمي يسار │
├───────────────────┼────────────── ────────┼─ ─────────────┼──────────────┤
على سبيل المثال + على سبيل المثال │إضافة │ رقمية يسار
على سبيل المثال - على سبيل المثال طرح رقمي يسار
├───────────────────┼────────────── ────────┼─ ─────────────┼──────────────┤
على سبيل المثال على سبيل المثال │سلسلة السلاسل السلسلة اليسار
├───────────────────┼────────────── ────────┼─ ─────────────┼──────────────┤
على سبيل المثال < على سبيل المثال أقل من رقم بلا
على سبيل المثال <= على سبيل المثال أقل من أو يساوي رقم بلا
على سبيل المثال != على سبيل المثال │لا يساوي لا رقمي بلا
على سبيل المثال == على سبيل المثال مساوية لـ لا عددي
على سبيل المثال > على سبيل المثال │ أكبر من رقم بلا
على سبيل المثال >= على سبيل المثال أكبر من أو يساوي رقمي بلا
├───────────────────┼────────────── ────────┼─ ─────────────┼──────────────┤
على سبيل المثال ~ على سبيل المثال تطابق ERE رقم بلا
على سبيل المثال !~ على سبيل المثال │ERE غير متطابق رقمي بلا
├───────────────────┼────────────── ────────┼─ ─────────────┼──────────────┤
على سبيل المثال في المصفوفة "عضوية المصفوفة" رقم "يسار"
│ ( مؤشر ) في مجموعة مصفوفة متعددة الأبعاد │ رقمية يسار │
│ │ عضوية │ │ │
├───────────────────┼────────────── ────────┼─ ─────────────┼──────────────┤
على سبيل المثال && على سبيل المثال "منطقية و" رقمية "اليسار"
├───────────────────┼────────────── ────────┼─ ─────────────┼──────────────┤
على سبيل المثال || على سبيل المثال "منطقي أو" رقمي "يسار"
├───────────────────┼────────────── ────────┼─ ─────────────┼──────────────┤
إكسبر 1 ? إكسبر 2 : إكسبر 3│ تعبير شرطي نوع المحدد يمين
│ │ │إكسبر 2 or إكسبر 3 │ │
├───────────────────┼────────────── ────────┼─ ─────────────┼──────────────┤
│lvalue ^ = على سبيل المثال │إسناد الإعفاء رقمي │ حق
│lvalue٪ = على سبيل المثال │حالة صيغة │ رقمية حق
│lvalue * = على سبيل المثال │حالة الضرب رقمية حق
│lvalue / = على سبيل المثال إسناد القسم رقمي │ حق
│lvalue + = على سبيل المثال إضافة مهمة رقمية حق
│lvalue - = على سبيل المثال حالة الطرح رقمية حق
│القيمة = على سبيل المثال "التنازل" نوع على سبيل المثال "الحق"
└ └ ─ ─ ┴ ─────────────┴──────────────┘
يجب أن يكون لكل تعبير إما قيمة سلسلة أو قيمة رقمية أو كليهما. باستثناء ما
في سياقات محددة ، يجب تحويل قيمة التعبير ضمنيًا إلى
النوع المطلوب للسياق الذي يتم استخدامه فيه. يجب تحويل قيمة السلسلة إلى
قيمة عددية إما عن طريق ما يعادل الاستدعاءات التالية للوظائف المحددة بواسطة
معيار ISO C:

setlocale (LC_NUMERIC ، "") ؛
قيمة عددية = atof (قيمة السلسلة);

أو عن طريق تحويل الجزء الأولي من السلسلة إلى الكتابة مضاعفة التمثيل باسم
يتبع:

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

الشكل المتوقع لتسلسل الموضوع اختياري "+" or "-" التوقيع ، ثم أ
تسلسل غير فارغ للأرقام يحتوي اختياريًا على أ ، ثم اختياري
جزء الأس. يتكون جزء الأس من "ه" or "ه"، متبوعًا بعلامة اختيارية
علامة ، متبوعة برقم عشري واحد أو أكثر.

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

قيمة عددية تساوي بالضبط قيمة عدد صحيح (انظر القسم 1.1.2,
المفاهيم مستمد تبدأ من القادم ISO C المجموعة الأساسية ) إلى سلسلة بالمكافئ
دعوة إلى sprintf وظيفة (انظر خيط وظائف) مع السلسلة "٪د" كما معاهدة المواد الانشطارية
الوسيطة والقيمة الرقمية التي يتم تحويلها على أنها الأولى والوحيدة على سبيل المثال دعوى. أي
يجب تحويل القيمة الرقمية الأخرى إلى سلسلة بما يعادل استدعاء
sprintf تعمل بقيمة المتغير كونففمت كما معاهدة المواد الانشطارية حجة و
يتم تحويل القيمة الرقمية إلى القيمة الأولى والوحيدة على سبيل المثال دعوى. نتيجة
التحويل غير محدد إذا كانت قيمة كونففمت ليس تنسيق الفاصلة العائمة
تخصيص. يحدد هذا الحجم من POSIX.1-2008 عدم وجود تحويلات صريحة بين
الأرقام والسلاسل. يمكن للتطبيق أن يجبر أحد التعبيرات على معاملته كرقم بواسطته
إضافة صفر إليها ، أو يمكن إجبارها على التعامل معها كسلسلة من خلال تسلسل القيمة الخالية
خيط ("") إليها.

تعتبر قيمة السلسلة أ الرقمية سلسلة إذا كان ناتجًا عن أحد الأمور التالية:

1. متغيرات المجال

2. المدخلات من الحصول على خط() وظيفة

3. اسم الملف

4. ARGV عناصر مجموعة

5. البيئة عناصر مجموعة

6. صفيف العناصر التي تم إنشاؤها بواسطة انقسم() وظيفة

7. تخصيص متغير سطر الأوامر

8. إسناد متغير من متغير سلسلة رقمية آخر

والشرط المعتمد على التنفيذ المقابل لأي من الحالتين (أ) أو (ب) أدناه هو
التقى.

أ. بعد ما يكافئ الاستدعاءات التالية للوظائف المحددة بواسطة ISO C
المعيار، string_value_end قد تختلف عن قيمة السلسلة، وأي شخصيات من قبل
إنهاء الحرف الفارغ في string_value_end سيكون الشخصيات:

دبابة * string_value_end ؛
setlocale (LC_NUMERIC ، "") ؛
قيمة عددية = سترتود (قيمة السلسلة، & string_value_end) ؛

ب. بعد تطبيق جميع التحويلات التالية ، فإن السلسلة الناتجة ستفعل
يتم التعرف عليها معجميا على أنها عدد رمز كما هو موضح في الاصطلاحات المعجمية في
قواعد:

- كل المتقدم والتأخر يتم تجاهل الشخصيات.

- إذا كان الأول غير- يكون "+" or "-"، يتم التخلص منه.

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

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

* أول تعبير فرعي للتعبير الشرطي

* تعبير يتم تشغيله بواسطة NOT المنطقية أو المنطقية AND أو المنطقية OR

* التعبير الثاني عن أ لـ بيان

* التعبير عن if بيان

* التعبير عن ال في حين شرط في أي من في حين or do في حين بيان

* تعبير يستخدم كنمط (كما في الهيكل العام للبرنامج)

يجب أن تتبع جميع العمليات الحسابية دلالات حساب الفاصلة العائمة كما هو محدد بواسطة
معيار ISO C (انظر القسم 1.1.2, المفاهيم مستمد تبدأ من القادم ISO C المجموعة الأساسية ).

قيمة التعبير:

إكسبر 1 ^ إكسبر 2

يجب أن تكون مكافئة للقيمة التي تم إرجاعها بواسطة استدعاء الدالة القياسي ISO C:

الأسرى (إكسبر 1, إكسبر 2)

التعبير:

لفالو ^= على سبيل المثال

يجب أن تكون مكافئة للتعبير القياسي ISO C:

لفالو = الأسرى (lvalue ، على سبيل المثال)

فيما عدا أن lvalue سيتم تقييمها مرة واحدة فقط. قيمة التعبير:

إكسبر 1 % إكسبر 2

يجب أن تكون مكافئة للقيمة التي تم إرجاعها بواسطة استدعاء الدالة القياسي ISO C:

fmod (إكسبر 1, إكسبر 2)

التعبير:

لفالو %= على سبيل المثال

يجب أن تكون مكافئة للتعبير القياسي ISO C:

لفالو = fmod (lvalue ، على سبيل المثال)

فيما عدا أن lvalue سيتم تقييمها مرة واحدة فقط.

يتم تعيين المتغيرات والحقول من خلال بيان التخصيص:

لفالو = التعبير

ونوع التعبير يجب تحديد نوع المتغير الناتج. الاحالة
يتضمن الواجبات الحسابية ("+ =", "- =", "* =", "/ =", "٪ =", "^ =", "++", "−−") الجميع
التي يجب أن ينتج عنها نتيجة رقمية. الجانب الأيسر من المهمة و
يمكن أن يكون هدف عوامل الزيادة والتناقص واحدًا من متغير ، مصفوفة ذات فهرس ،
أو محدد الحقل.

إنّ كافة أنواع عهود الـ AWK مصفوفات مستلزمات اللغة المستخدمة لتخزين الأرقام أو السلاسل. المصفوفات
لا يلزم التصريح عنها. يجب أن تكون فارغة في البداية وأن تتغير أحجامها
ديناميكيًا. الرموز الفرعية ، أو معرفات العنصر ، هي سلاسل توفر نوعًا من
قدرة الصفيف النقابي. اسم مصفوفة متبوعًا بحرف منخفض داخل أقواس مربعة
يمكن استخدامها باعتبارها lvalue وبالتالي كتعبير ، كما هو موصوف في القواعد ؛ يرى
قواعد. يمكن استخدام أسماء المصفوفات غير المرتبطة فقط في السياقات التالية:

* معلمة في تعريف دالة أو استدعاء وظيفة

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

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

فار[إكسبر 1, إكسبر 2... اكسبرن]

فار[إكسبر 1 ثانوية إكسبر 2 ثانوية ... اكسبرن]

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

مقارنات (مع "<", "<=", "! =", "==", ">"و "> =" المشغلين)
عدديًا إذا كان كلا المعاملين رقميين ، إذا كان أحدهما رقمي والآخر يحتوي على سلسلة
قيمة عبارة عن سلسلة رقمية ، أو إذا كان أحدهما رقمي والآخر به غير مهيأ
قيمة. خلاف ذلك ، يجب تحويل المعاملات إلى سلاسل كما هو مطلوب وسلسلة
يجب إجراء المقارنة باستخدام تسلسل الترتيب الخاص بالموقع. قيمة
يجب أن يكون تعبير المقارنة 1 إذا كانت العلاقة صحيحة ، أو 0 إذا كانت العلاقة خاطئة.

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

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

يجب أن تدعم التطبيقات المتغيرات الخاصة الأخرى التالية التي تم تعيينها بواسطة AWK:

ARGC عدد العناصر في ملف ARGV مجموعة مصفوفة.

ARGV مصفوفة من وسيطات سطر الأوامر ، باستثناء الخيارات و برنامج جدال،
مرقمة من صفر إلى ARGC-1.

الحجج في ARGV يمكن تعديلها أو إضافتها إلى ؛ ARGC يمكن تغييرها. حيث ان
ينتهي ملف الإدخال ، AWK يجب أن يعامل العنصر التالي غير الفارغ لـ ARGV، حتى
القيمة الحالية لـ ARGC−1 ، ضمناً ، كاسم ملف الإدخال التالي. هكذا،
تحديد عنصر ARGV يعني أن لاغى أنه لا يجب معاملته على أنه
ملف الإدخال. الاسم "-" يشير إلى الإدخال القياسي. إذا تطابق حجة
شكل ملف مهمة المعامل ، يجب التعامل مع هذه الحجة على أنها
مهمة خير من ملف جدال.

كونففمت إنّ كافة أنواع عهود الـ printf تنسيق لتحويل الأرقام إلى سلاسل (باستثناء الإخراج
البيانات ، أين OFMT يستخدم) ؛ "٪ .6g" بشكل افتراضي.

البيئة مصفوفة تمثل قيمة البيئة ، كما هو موضح في ملف EXEC
الوظائف المحددة في حجم واجهات النظام من POSIX.1-2008. المؤشرات
من المصفوفة يجب أن تكون سلاسل تتكون من أسماء البيئة
المتغيرات ، وقيمة كل عنصر مصفوفة يجب أن تكون سلسلة تتكون من
قيمة هذا المتغير. إذا كان ذلك مناسبًا ، يجب أن يكون متغير البيئة
يعتبر الرقمية سلسلة (انظر التعبيرات in AWK) ؛ يجب أن يكون عنصر الصفيف
لها أيضًا قيمتها الرقمية.

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

اسم الملف اسم مسار ملف الإدخال الحالي. داخل ابدأ عمل القيمة
غير معرف. داخل END الإجراء يجب أن تكون القيمة اسم آخر إدخال
معالجة الملف.

FNR الرقم الترتيبي للسجل الحالي في الملف الحالي. داخل ابدأ
يجب أن تكون القيمة صفرًا. داخل END الإجراء يجب أن تكون القيمة
رقم السجل الأخير الذي تمت معالجته في الملف الأخير الذي تمت معالجته.

FS التعبير العادي لفاصل حقل الإدخال ؛ أ بشكل افتراضي.

NF عدد الحقول في السجل الحالي. داخل ابدأ العمل ، واستخدام NF
غير معرّف ما لم أ الحصول على خط وظيفة بدون أ فار يتم تنفيذ الحجة
سابقًا. داخل END العمل، NF يجب أن تحتفظ بالقيمة التي كانت لديها لآخر مرة
قراءة السجل ، ما لم يكن لاحقًا ، معاد توجيهه ، الحصول على خط وظيفة بدون أ فار
يتم تنفيذ الحجة قبل دخول END عمل.

NR الرقم الترتيبي للسجل الحالي من بداية الإدخال. داخل
ابدأ يجب أن تكون القيمة صفرًا. داخل END العمل يجب أن تكون القيمة
رقم آخر سجل تمت معالجته.

OFMT إنّ كافة أنواع عهود الـ printf تنسيق لتحويل الأرقام إلى سلاسل في عبارات الإخراج (راجع
الناتج البيانات); "٪ .6g" بشكل افتراضي. نتيجة التحويل
غير محدد إذا كانت قيمة OFMT ليس أحد مواصفات تنسيق الفاصلة العائمة.

OFS إنّ كافة أنواع عهود الـ طباعة فاصل حقل الإخراج البيان ؛ بشكل افتراضي.

ORS إنّ كافة أنواع عهود الـ طباعة فاصل سجل الإخراج البيان ؛ أ بشكل افتراضي.

طول طول السلسلة التي يطابقها ملف مباراة وظيفة.

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

رستارت موضع البداية للسلسلة المطابقة لـ مباراة وظيفة الترقيم
من 1. يجب أن يكون هذا دائمًا مساويًا لقيمة إرجاع مباراة
وظيفة.

ثانوية سلسلة فاصل منخفض للصفائف متعددة الأبعاد ؛ القيمة الافتراضية
هو تعريف التنفيذ.

منتظم التعبيرات
إنّ كافة أنواع عهود الـ AWK يجب أن تستفيد المنفعة من تدوين التعبير العادي الموسع (انظر القاعدة
حجم التعاريف من POSIX.1-2008 ، القسم 9.4, ممتد منتظم التعبيرات) باستثناء هذا
يجب أن يسمح باستخدام اصطلاحات لغة C للهروب من الأحرف الخاصة داخل
EREs ، على النحو المحدد في الجدول في حجم التعريفات الأساسية لـ POSIX.1-2008 ،
باب 5, قم بتقديم شكل التدوين ("\\", '\أ', '\ب', '\F', '\ن', "\ r", "\ t", '\الخامس') و
الجدول التالي؛ يجب التعرف على تسلسلات الهروب هذه من الداخل والخارج
تعابير الأقواس. لاحظ أنه لا يلزم فصل السجلات بـ الشخصيات و
يمكن أن تحتوي ثوابت السلسلة حتى الشخصيات "\ن" التسلسل صالح في
AWK EREs. باستخدام أ الحرف داخل ERE يتطلب الهروب الموضح في
الجدول التالي.

طاولات 4-2: هرب متواليات in AWK

┌────────────────────────────────── ───────┬── ─────────────────────────────┐
هرب │ │ │
تسلسلالوصفمعنى
├─────────┼──────────────────────── ───────┼── ─────────────────────────────┤
│ \ "│ │ حرف │
├─────────┼──────────────────────── ───────┼── ─────────────────────────────┤
│ \ / │ │ حرف │
├─────────┼──────────────────────── ───────┼── ─────────────────────────────┤
│ \ ddd │ أ يتبع الحرف │ الحرف الذي يتم ترميزه │
│ │ بأطول تسلسل واحد ، │ يمثله واحد أو اثنان أو │
│ │ رقمان أو ثلاثة أرقام ثماني │ عدد صحيح ثماني مكون من ثلاثة أرقام. متعدد │
│ │ أحرف (01234567). إذا كانت كل أحرف البايت تتطلب عدة أحرف ، │
│ │ الأرقام هي 0 (أي ، تسلسل هروب متسلسل
│ │ تمثيل NUL هذا النوع بما في ذلك البادئة
│ │) ، السلوك هو │ لكل بايت. │
│ │ غير محدد. │ │
├─────────┼──────────────────────── ───────┼── ─────────────────────────────┤
│ \ ج │ أ حرف يتبع │ غير محدد │
│ │ بأي حرف غير موصوف في │ │
│ │ هذا الجدول أو في الجدول في │ │
│ │ حجم التعريفات الأساسية │ │
│ │ POSIX.1‐2008 ، باب 5, قم بتقديم │ │
│ │ شكل التدوين ("\\", '\أ', '\ب'، │ │
│ │ '\F', '\ن', "\ r", "\ t", '\الخامس'). │ │
└─────────┴──────────────────────── ───────┴── ─────────────────────────────┘
يمكن مطابقة التعبير العادي مع حقل أو سلسلة معينة باستخدام أحد
عاملان مطابقان للتعبير العادي ، "~" و "! ~". يجب على هؤلاء المشغلين تفسير
معاملهم الأيمن كتعبير عادي ومعاملهم الأيسر كسلسلة.
إذا كان التعبير النمطي يطابق السلسلة ، فإن "~" يجب أن يتم تقييم التعبير إلى قيمة
من 1 و "! ~" يجب أن يتم تقييم التعبير بقيمة 0. (التعبير النمطي
عملية المطابقة محددة بالمصطلح المطابق في حجم التعريفات الأساسية لـ
POSIX.1-2008 ، القسم 9.1, منتظم التعبير التعريفات، حيث تحدث المباراة على أي
جزء من السلسلة ما لم يقتصر التعبير النمطي على أو
أحرف خاصة.) إذا كان التعبير العادي لا يتطابق مع السلسلة ،
القادم "~" يجب تقييم التعبير بقيمة 0 ، و "! ~" يجب تقييم التعبير
إلى قيمة 1. إذا كان المعامل الأيمن هو أي تعبير بخلاف الرمز المعجمي
ERE، يجب تفسير قيمة سلسلة التعبير على أنها نظام موسع
التعبير ، بما في ذلك اصطلاحات الهروب الموضحة أعلاه. لاحظ أن هذه نفس الهروب
يجب أيضًا تطبيق الاصطلاحات في تحديد قيمة سلسلة حرفية (
رمز معجمي STRING) ، وبالتالي يجب تطبيقها مرة ثانية عندما تكون السلسلة حرفية
المستخدمة في هذا السياق.

عندما ERE يظهر الرمز المميز كتعبير في أي سياق بخلاف الجانب الأيمن من
القادم "~" or "! ~" عامل التشغيل أو كواحدة من وسيطات الدالة المضمنة الموضحة أدناه ، فإن
يجب أن تكون قيمة التعبير الناتج معادلة:

$0 " " /ملامح/

إنّ كافة أنواع عهود الـ ملامح حجة لل com.gsub, مباراة, فرعية وظائف ، و fs حجة لل انقسم
وظيفة (انظر خيط وظائف) على أنها تعبيرات عادية موسعة.
يمكن أن تكون هذه إما ERE الرموز أو التعبيرات التعسفية ، ويجب تفسيرها في
بنفس الطريقة مثل الجانب الأيمن من "~" or "! ~" المشغل.

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

1. إذا FS هي سلسلة فارغة ، والسلوك غير محدد.

2. إذا FS هو حرف واحد:

أ. لو FS يكون ، تخطي البادئة والخلفية و الشخصيات؛
يجب تحديد الحقول بمجموعات من واحد أو أكثر أو الشخصيات.

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

3. وإلا ، فإن قيمة السلسلة FS يجب اعتباره منتظمًا موسعًا
تعبير. كل تكرار لتسلسل يطابق التعبير العادي الممتد
يجب تحديد الحقول.

ما عدا "~" و "! ~" المشغلين ، وفي com.gsub, مباراة, انقسمو فرعية مدمج
الوظائف ، يجب أن تستند مطابقة ERE إلى سجلات الإدخال ؛ وهذا هو ، فاصل التسجيل
الأحرف (أول حرف من قيمة المتغير RSو بشكل افتراضي)
لا يمكن تضمينه في التعبير ، ولا يجب أن يتطابق أي تعبير مع فاصل السجل
شخصية. إذا لم يكن فاصل السجل و الأحرف المضمنة في
يمكن مطابقة التعبير. بالنسبة إلى "~" و "! ~" المشغلين ، وفي تلك الأربعة المضمنة
وظائف ، يجب أن تستند مطابقة ERE إلى سلاسل النص ؛ أي ، أي شخصية (بما في ذلك
وفاصل التسجيلة) في النمط ، ومناسب
يجب أن يتطابق النمط مع أي حرف. ومع ذلك ، في الكل AWK مطابقة ERE ، استخدام واحد أو
ينتج المزيد من أحرف NUL في النمط أو سجل الإدخال أو السلسلة النصية غير معرف
النتائج.

أنماط
A النمط هو أي صالح التعبير، نطاق محدد بواسطة تعبيرين مفصولين بعلامة أ
فاصلة ، أو أحد النمطين الخاصين ابدأ or END.

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

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

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

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

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

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

إنّ كافة أنواع عهود الـ التعبير بمثابة الشرط في if يجب تقييم البيان وإذا كان
غير صفري أو غير فارغ ، يجب تنفيذ العبارة التالية ؛ خلاف ذلك ، إذا آخر is
الحاضر ، البيان التالي آخر يجب أن يتم تنفيذها.

إنّ كافة أنواع عهود الـ if, في حين, do في حين, لـ, استراحةو استمر تستند البيانات إلى ISO C
قياسي (انظر القسم 1.1.2, المفاهيم مستمد تبدأ من القادم ISO C المجموعة الأساسية ) ، باستثناء أن ملف
يجب التعامل مع التعبيرات المنطقية على النحو الموصوف في التعبيرات in AWK، وما عدا في
حالة من:

لـ (متغير in مجموعة)

التي يجب أن تتكرر ، وتخصيص كل منها مؤشر of مجموعة إلى متغير بترتيب غير محدد.
نتائج إضافة عناصر جديدة إلى مجموعة ضمن هذا لـ الحلقة غير محددة. اذا كان
استراحة or استمر تحدث العبارة خارج حلقة ، السلوك غير محدد.

إنّ كافة أنواع عهود الـ حذف يجب أن يزيل البيان عنصر صفيف فردي. وهكذا ، فإن الكود التالي
يحذف مصفوفة كاملة:

لـ (فِهرِس in مجموعة مصفوفة)
حذف مجموعة [فهرس]

إنّ كافة أنواع عهود الـ التالي يجب أن يتسبب البيان في أن تكون جميع عمليات المعالجة الإضافية لسجل الإدخال الحالي
متروك. السلوك غير معرف إذا أ التالي يظهر البيان أو يتم استدعاؤه في ملف ابدأ
or END عمل.

إنّ كافة أنواع عهود الـ خروج يجب بيان استدعاء الكل END الإجراءات بالترتيب الذي تحدث به في
مصدر البرنامج ثم إنهاء البرنامج دون قراءة المزيد من المدخلات. ان خروج
بيان داخل ملف END يؤدي الإجراء إلى إنهاء البرنامج دون تنفيذ مزيد من
END أجراءات. إذا تم تحديد تعبير في ملف خروج البيان ، يجب أن تكون قيمته الرقمية
تكون حالة الخروج من AWK، ما لم تتم مصادفة أخطاء لاحقة أو لاحقة خروج
يتم تنفيذ بيان مع تعبير.

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

> التعبير
>> التعبير
| التعبير

في جميع الحالات ، فإن التعبير يجب أن يتم تقييمها لإنتاج سلسلة تستخدم كـ a
اسم المسار الذي تكتب إليه (ل ">" or ">>") أو كأمر ليتم تنفيذه (ل '|').
باستخدام النموذجين الأولين ، إذا لم يكن الملف الذي يحمل هذا الاسم مفتوحًا حاليًا ، فيجب أن يكون
فتح ، وإنشائه إذا لزم الأمر واستخدام النموذج الأول ، واقتطاع الملف. الإخراج
ثم يتم إلحاقه بالملف. طالما ظل الملف مفتوحًا ، فسيتم إجراء مكالمات لاحقة بتنسيق
التي التعبير يقيّم إلى نفس قيمة السلسلة يجب ببساطة إلحاق الإخراج إلى
ملف. يظل الملف مفتوحًا حتى ملف اغلق وظيفة (انظر الإدخال / الإخراج و أسئلة عامة
وظائف) مع تعبير يتم تقييمه بنفس قيمة السلسلة.

يجب أن يكتب النموذج الثالث المخرجات على تدفق الأنابيب إلى مدخلات الأمر. ال
يجب إنشاء دفق إذا لم يكن هناك دفق مفتوح حاليًا بقيمة التعبير كما لها
اسم الأمر. يجب أن يكون الدفق الذي تم إنشاؤه معادلاً للتيار الذي تم إنشاؤه بواسطة استدعاء لـ
بوبين() وظيفة محددة في حجم واجهات النظام من POSIX.1-2008 بقيمة
التعبير كما أمر حجة وقيمة w كما طريقة دعوى. طالما أن ملف
يظل التدفق مفتوحًا ، والمكالمات اللاحقة التي التعبير بتقييم لنفس السلسلة
يجب أن تكتب القيمة الإخراج إلى التيار الحالي. يجب أن يظل الدفق مفتوحًا حتى
اغلق وظيفة (انظر الإدخال / الإخراج و أسئلة عامة وظائف) مع تعبير
يقيّم إلى نفس قيمة السلسلة. في ذلك الوقت ، يجب إغلاق الدفق كما لو كان بواسطة a
استدعاء pإغلاق() وظيفة محددة في حجم واجهات النظام من POSIX.1-2008.

كما هو موضح بالتفصيل في القواعد النحوية قواعد، يجب أن تأخذ بيانات الإخراج هذه
قائمة منفصلة من التعبيرs المشار إليها في القواعد غير الطرفية
رموز expr_list, print_expr_list أو print_expr_list_opt. يشار إلى هذه القائمة هنا
كما التعبير الإدارية، ويشار إلى كل عضو باسم التعبير حجة.

إنّ كافة أنواع عهود الـ طباعة يجب أن يكتب البيان قيمة كل حجة تعبير على المشار إليه
تيار الإخراج مفصولة بفاصل مجال الإخراج الحالي (انظر المتغير OFS فوق)،
وتنتهي بفاصل سجل الإخراج (انظر المتغير ORS فوق). كل تعبير
يجب أن تؤخذ الحجج كسلاسل ، ويتم تحويلها إذا لزم الأمر ؛ يجب هذا التحويل
يكون كما هو موضح في التعبيرات in AWK، باستثناء أن printf تنسيق في OFMT
يجب استخدامها بدلاً من القيمة في كونففمت. يجب أن ترمز قائمة التعبير الفارغة إلى
سجل الإدخال بالكامل (0 دولار).

إنّ كافة أنواع عهود الـ printf يجب أن ينتج البيان ناتجًا بناءً على تدوين مشابه لتنسيق الملف
يستخدم الترميز لوصف تنسيقات الملفات في هذا المجلد من POSIX.1-2008 (انظر القاعدة
حجم التعاريف من POSIX.1-2008 ، باب 5, قم بتقديم شكل التدوين). يجب أن يكون الإخراج
أنتجت على النحو المحدد مع الأول التعبير حجة كسلسلة شكل و
لاحق التعبير الحجج كالسلاسل أرج 1 إلى أرجن، شاملة ، بما يلي
استثناءات:

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

2. إذا كانت مجموعة الأحرف تحتوي على ملف 'الشخصية وتلك الشخصية تظهر في شكل
السلسلة ، يجب معاملتها كحرف عادي يتم نسخه إلى الإخراج.

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

4. حقل عرض or دقة يمكن تحديدها على أنها "*" بدلا من رقم
خيط. في هذه الحالة سيتم جلب الوسيطة التالية من قائمة التعبير و
قيمته الرقمية تؤخذ على أنها عرض الحقل أو الدقة.

5. يجب ألا يسبق التنفيذ أو يتبع الإخراج من d or u تحويل
أحرف المحدد مع أحرف لم يحددها شكل سلسلة.

6. يجب ألا يسبق التنفيذ الناتج من o حرف محدد التحويل
بأصفار بادئة غير محددة بواسطة شكل سلسلة.

7. ل c حرف محدد التحويل: إذا كانت الوسيطة تحتوي على قيمة عددية ، فسيتم
يجب أن يتم إخراج الحرف الذي يكون ترميزه هو تلك القيمة. إذا كانت القيمة صفر أم لا
ترميز أي حرف في مجموعة الأحرف ، السلوك غير محدد. إذا كان
لا تحتوي الوسيطة على قيمة عددية ، يجب أن يكون الحرف الأول من قيمة السلسلة
يكون الإخراج إذا كانت السلسلة لا تحتوي على أي أحرف ، فسيكون السلوك غير محدد.

8. لكل مواصفة تحويل تستهلك وسيطة ، التعبير التالي
يجب تقييم الحجة. باستثناء c محدد التحويل
حرف ، يجب تحويل القيمة (وفقًا للقواعد المحددة في
التعبيرات in AWK) إلى النوع المناسب لمواصفات التحويل.

9. إذا لم تكن هناك حجج تعبير كافية لتلبية كل التحويل
المواصفات في شكل السلسلة ، السلوك غير محدد.

10. إذا كان أي تسلسل حرف في شكل السلسلة تبدأ ب '٪' الطابع ، لكنه يفعل
لا تشكل مواصفة تحويل صالحة ، فالسلوك غير محدد.

يبلغ قطر كلاً من طباعة و printf يمكن إخراج {LINE_MAX} بايت على الأقل.

وظائف
إنّ كافة أنواع عهود الـ AWK تحتوي اللغة على مجموعة متنوعة من الوظائف المضمنة: الحساب ، والسلسلة ، والإدخال / الإخراج ،
وعامة.

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

أتان2(y,x)
إرجاع ظل الزاوية من y/x بالتقدير الدائري في النطاق [، π].

كوس(x) إرجاع جيب التمام لـ x، حيث x بالتقدير الدائري.

بدون(x) عودة شرط x، حيث x بالتقدير الدائري.

إكسب(x) إعادة الدالة الأسية لـ x.

سجل(x) إرجاع اللوغاريتم الطبيعي لـ x.

الجذر التربيعي(x) أعد الجذر التربيعي لـ x.

مادبا(x) إعادة الوسيطة المقتطعة إلى عدد صحيح. يجب أن يكون الاقتطاع باتجاه الصفر عندما
x> 0.

صف() قم بإرجاع رقم عشوائي n، مثل هذا 0≤n

سراند([على سبيل المثال])
قم بتعيين القيمة الأولية لـ صف إلى على سبيل المثال أو استخدم الوقت من اليوم إذا على سبيل المثال تم حذفه.
يجب إرجاع القيمة الأولية السابقة.

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

com.gsub(ملامح, استبدل[, in])
تتصرف مثل فرعية (انظر أدناه) ، باستثناء أنه يجب أن يحل محل جميع تكرارات
التعبير العادي (مثل ed بديل عالمي للمرافق) في $ 0 أو في in
حجة ، عند تحديدها.

مؤشر(s, t)
أعد الموضع ، بالأحرف ، ترقيمًا من 1 ، في السلسلة s حيث السلسلة t
يحدث أولاً ، أو صفر إذا لم يحدث على الإطلاق.

طول[([s])]
إرجاع طول الوسيطة المأخوذة كسلسلة بالأحرف أو امتداد
سجل كامل ، 0 دولار ، إذا لم يكن هناك حجة.

مباراة(s, ملامح)
أعد الموضع ، بالأحرف ، ترقيمًا من 1 ، في السلسلة s حيث
التعبير النمطي الممتد ملامح يحدث ، أو صفر إذا لم يحدث على الإطلاق.
يجب تعيين RSTART على موضع البداية (وهو نفس الوضع الذي تم إرجاعه
value) ، صفر إذا لم يتم العثور على تطابق ؛ يجب تعيين RLENGTH على طول
السلسلة المتطابقة ، −1 إذا لم يتم العثور على تطابق.

انقسم(s, a[, fs ])
انقسام السلسلة s في عناصر المصفوفة a[1]، a[2] ، ... ، a[n] والعودة n. جميع
يجب حذف عناصر المصفوفة قبل إجراء التقسيم. ال
يجب أن يتم الفصل مع ERE fs أو مع فاصل المجال FS if fs is
غير معطى. يجب أن يكون لكل عنصر مصفوفة قيمة سلسلة عند إنشائه ، وإذا كان
بشكل مناسب ، يعتبر عنصر المصفوفة سلسلة رقمية (انظر
التعبيرات in AWK). تأثير سلسلة فارغة كقيمة fs is
غير محدد.

sprintf(معاهدة المواد الانشطارية, على سبيل المثال, على سبيل المثال، ...)
نسّق التعبيرات وفقًا لملف printf التنسيق الذي قدمه معاهدة المواد الانشطارية والعودة
السلسلة الناتجة.

الفرعية(ملامح, استبدل[, in ])
استبدل السلسلة استبدل بدلا من المثيل الأول من الموسعة
تعبير عادي ERE في السلسلة in وإرجاع عدد الاستبدالات. ان
("&") التي تظهر في السلسلة استبدل يجب استبداله بالسلسلة
تبدأ من in الذي يطابق ERE. ان يسبقه سوف
يتم تفسيرها على أنها حرفية شخصية. حدوث اثنين
متتابع يجب تفسير الأحرف على أنها مجرد حرف واحد
شخصية. أي حدوث آخر ل (على سبيل المثال،
التي تسبق أي حرف آخر) معاملة حرفية
شخصية. لاحظ أنه إذا كان استبدل هي سلسلة حرفية (الرمز المعجمي STRING. بحيرة
قواعد) ، والتعامل مع يحدث الحرف بعد أي معجم
المعالجة ، بما في ذلك أي معجم - معالجة تسلسل الهروب. لو in
محدد وهو ليس lvalue (انظر التعبيرات in AWK) ، السلوك
غير معرف. لو in تم حذفه، AWK يجب استخدام السجل الحالي (0 دولار) في مكانه.

SUBSTR(s, m[, n ])
إرجاع على الأكثر n-السلسلة الفرعية للحرف s التي تبدأ من الموضع m,
ترقيم من 1. إذا n تم حذفه ، أو إذا n يحدد عدد أحرف أكثر من
إذا تركت في الخيط ، يجب أن يكون طول السلسلة الفرعية محددًا بالطول
من السلسلة s.

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

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

جميع الوظائف السابقة التي تتطلب ERE كمعامل توقع نمط أو سلسلة
تعبير قيم هو تعبير عادي كما هو محدد في منتظم التعبيرات.

الإدخال / الإخراج و أسئلة عامة وظائف
المدخلات / المخرجات والوظائف العامة هي:

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

التعبير | الحصول على خط [فار]
اقرأ سجل المدخلات من تدفق الأنابيب من إخراج الأمر. ال
يجب إنشاء دفق إذا لم يكن هناك دفق مفتوح حاليًا بقيمة
التعبير كاسم أمره. يجب أن يكون التيار الناتج معادلاً لواحد
تم إنشاؤه بواسطة دعوة إلى بوبين() تعمل بقيمة التعبير كما
أمر حجة وقيمة r كما طريقة دعوى. ما دام الدفق
يظل مفتوحًا ، والمكالمات اللاحقة التي التعبير بتقييم لنفس السلسلة
يجب قراءة السجلات اللاحقة من الدفق. يجب أن يبقى الدفق
فتح حتى اغلق يتم استدعاء الدالة بالتعبير الذي يتم تقييمه لـ
نفس قيمة السلسلة. في ذلك الوقت ، يجب إغلاق الدفق كما لو كان الاتصال
القادم pإغلاق() وظيفة. لو فار تم حذفه و $ 0 و NF يجب أن يتم تعيين ؛ خلاف ذلك، فار
يجب تعيينها ، وإذا كان ذلك مناسبًا ، تعتبر سلسلة رقمية (انظر
التعبيرات in AWK).

إنّ كافة أنواع عهود الـ الحصول على خط يمكن أن يشكل المشغل بنيات غامضة عند وجودها
عوامل التشغيل غير المحصورة (بما في ذلك التسلسل) على يسار '|' (إلى
بداية التعبير الذي يحتوي على الحصول على خط). في سياق "$"
المشغل أو العامل، '|' يجب أن تتصرف كما لو كان لها أسبقية أقل من "$". النتيجة
لتقييم المشغلين الآخرين غير محدد ، ويجب أن تتوافق التطبيقات
أقواس كل هذه الاستخدامات بشكل صحيح.

الحصول على خط اضبط $ 0 على سجل الإدخال التالي من ملف الإدخال الحالي. هذا الشكل من
الحصول على خط يجب تعيين NF, NRو FNR المتغيرات.

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

الحصول على خط [فار] < التعبير
اقرأ السجل التالي للإدخال من ملف مسمى. ال التعبير يجب أن تكون
يتم تقييمها لإنتاج سلسلة يتم استخدامها كاسم مسار. إذا كان ملف ذلك
الاسم ليس مفتوحًا حاليًا ، سيتم فتحه. طالما بقي الدفق
مفتوحة ، والمكالمات اللاحقة التي التعبير يقيّم إلى نفس قيمة السلسلة
يجب قراءة السجلات اللاحقة من الملف. يجب أن يظل الملف مفتوحًا حتى
القادم اغلق يتم استدعاء الوظيفة بتعبير يتم تقييمه بنفس القيمة
قيمة السلسلة. لو فار تم حذفه و $ 0 و NF يجب أن يتم تعيين ؛ خلاف ذلك، فار يجب أن تكون
تعيين ، وإذا كان ذلك مناسبًا ، يجب اعتباره سلسلة رقمية (راجع
التعبيرات in AWK).

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

نظام(التعبير)
نفذ الأمر الذي قدمه التعبير بطريقة تعادل نظام()
الوظيفة المحددة في حجم واجهات النظام من POSIX.1-2008 وإرجاع ملف
حالة الخروج من الأمر.

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

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

تعريف المستخدم وظائف
إنّ كافة أنواع عهود الـ AWK توفر اللغة أيضًا وظائف محددة من قبل المستخدم. يمكن تعريف هذه الوظائف على أنها:

وظيفة الاسم([المعلمة...]) { البيانات }

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

يمكن أن تكون معلمات الوظيفة ، إن وجدت ، إما مقاسات أو مصفوفات ؛ السلوك
undefined إذا تم تمرير اسم مصفوفة كمعامل تستخدمه الوظيفة كمقياس ، أو
إذا تم تمرير تعبير قياسي كمعامل تستخدمه الدالة كمصفوفة.
يجب تمرير معلمات الوظيفة بالقيمة إذا كانت قياسية وبالرجوع إليها إذا كان اسم المصفوفة.

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

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

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

قواعد
يجب أن تكون القواعد النحوية في هذا القسم والمصطلحات المعجمية في القسم التالي
تصف معا بناء الجملة ل AWK البرامج. الاصطلاحات العامة لهذا النمط من
القواعد موصوفة في القسم 1.3, قواعد الاتفاقيات. يمكن أن يكون البرنامج الصالح
يتم تمثيله كرمز غير طرفي برنامج في القواعد. يجب أن يكون هذا النحو الرسمي
لها الأسبقية على وصف بناء الجملة للنص السابق.

٪ رمز اسم عدد STRING ERE
٪ رمز FUNC_NAME /* الاسم يتبع by "(" بدون أبيض الفضاء. */

/* الكلمات الدالة */
٪ بداية نهاية الرمز المميز
/ * "BEGIN" END "* /

استراحة الرمز٪ متابعة ، حذف ، القيام بالآخر
/ * 'فاصل' 'متابعة' 'حذف' 'القيام' 'آخر' * /

٪ خروج من الرمز المميز للوظيفة إذا تم إدخالها
/ * 'exit' لـ '' function '' إذا '' in '* /

٪ token Next Printf العودة أثناء
/ * 'next' print '' printf '' return '' بينما '* /

/ * أسماء الوظائف المحجوزة * /
٪ الرمز المميز BUILTIN_FUNC_NAME
/ * رمز واحد لما يلي:
* atan2 cos sin exp log sqrt int rand srand
* تطابق طول مؤشر gsub سبرينتف سبرينت
* نظام إغلاق substr tolower toupper
*/
٪ الرمز المميز GETLINE
/ * تختلف نحويًا عن العناصر المضمنة الأخرى. * /

/ * الرموز المميزة المكونة من حرفين. * /
٪ رمز مميز ADD_ASSIGN SUB_ASSIGN MUL_ASSIGN DIV_ASSIGN MOD_ASSIGN POW_ASSIGN
/ * '+ =' '- =' '* =' '/ =' '٪ =' '^ =' * /

٪ رمز مميز OR AND NO_MATCH EQ LE GE NE INCR DECR APPEND
/ * '||' '&&' '! ~' '==' '<=' '> =' '! =' '++' '−−' '>>' * /

/ * الرموز المميزة المكونة من حرف واحد. * /
٪ رمز '{' '}' '(' ')' '[' ']' '،' '؛' خط جديد
٪ رمز '+' '-' '*' '٪' '^' '!' '>' <'' | ' "؟" ': "" "" $' '='

٪ ابدأ البرنامج
%%

البرنامج: item_list
| قائمة_عنصر_غير_عمل
;

item_list: newline_opt
| actionless_item_list إنهاء العنصر
| item_list عنصر إنهاء
| عنصر إنهاء الإجراء item_list
;

actionless_item_list: عنصر إنهاء نمط_قائمة
| actionless_item_list إنهاء النمط
;

العنصر: إجراء النمط
| الوظيفة NAME '(' param_list_opt ')'
newline_opt الإجراء
| الوظيفة FUNC_NAME '(' param_list_opt ')'
newline_opt الإجراء
;

param_list_opt: / * فارغ * /
| قائمة المعلمات
;

param_list: NAME
| param_list '،' NAME
;

نمط: ابدأ
| نهاية
| إكسبر
| expr '،' newline_opt expr
;

الإجراء: '{' newline_opt '}'
| '{' newline_opt terminated_statement_list '}'
| "{'newline_opt unterminated_statement_list'} '
;

فاصل: فاصل '؛'
| فاصل NEWLINE
| "؛"
| خط جديد
;

terminated_statement_list: terminated_statement
| termined_statement_list termined_statement
;

unterminated_statement_list: unterminated_statement
| terminated_statement_list uninminated_statement
;

terminated_statement: action newline_opt
| إذا كان '(' expr ')' newline_opt terminated_statement
| إذا كان '(' expr ')' newline_opt terminated_statement
newline_opt terminated_statement الأخرى
| بينما '(' expr ')' newline_opt terminated_statement
| لـ '(' simple_statement_opt '؛'
expr_opt '؛' simple_statement_opt ')' newline_opt
بيان منتهي
| لـ '(' NAME In NAME ')' newline_opt
بيان منتهي
| ';' newline_opt
| terminatable_statement NEWLINE newline_opt
| terminatable_statement ';' newline_opt
;

unterminated_statement : terminatable_statement
| إذا كان '(' expr ')' newline_opt unterminated_statement
| إذا كان '(' expr ')' newline_opt terminated_statement
وإلا newline_opt unterminated_statement
| بينما '(' expr ')' newline_opt unterminated_statement
| لـ '(' simple_statement_opt '؛'
expr_opt '؛' simple_statement_opt ')' newline_opt
unterminated_statement
| لـ '(' NAME In NAME ')' newline_opt
unterminated_statement
;

terminatable_statement: simple_statement
| استراحة
| يكمل
| التالى
| الخروج من expr_opt
| إرجاع expr_opt
| قم بـ newline_opt termined_statement while '(' expr ')'
;

simple_statement_opt : /* فارغ */
| simple_statement
;

simple_statement: حذف الاسم '[' expr_list ']'
| إكسبر
| print_statement
;

print_statement : simple_print_statement
| simple_print_statementoutput_redirection
;

simple_print_statement: طباعة print_expr_list_opt
| طباعة '(' multiple_expr_list ')'
| printf print_expr_list
| برينتف '(' multiple_expr_list ')'
;

output_redirection: '>' expr
| إلحاق إكسبر
| '|' EXPR
;

expr_list_opt : /* فارغ */
| expr_list
;

expr_list: expr
| multiple_expr_list
;

multiple_expr_list : expr '،' newline_opt expr
| multiple_expr_list '،' newline_opt expr
;

expr_opt : /* فارغ */
| إكسبر
;

expr : unary_expr
| Non_unary_expr
;

unary_expr : '+' expr
| '-' اكسبر
| unary_expr '^' expr
| unary_expr '*' expr
| unary_expr '/' expr
| unary_expr '%' expr
| unary_expr '+' expr
| unary_expr '-' expr
| unary_expr Non_unary_expr
| unary_expr '<' expr
| unary_expr جنيه اكسبر
| unary_expr NE expr
| unary_expr EQ expr
| unary_expr '>' expr
| unary_expr GE expr
| unary_expr '~' expr
| unary_expr NO_MATCH expr
| unary_expr في NAME
| unary_expr وnewline_opt expr
| unary_expr أو newline_opt expr
| unary_expr '؟" اكسبر ':' اكسبر
| unary_input_function
;

Non_unary_expr : '(' expr ')'
| '!' EXPR
| Non_unary_expr '^' expr
| Non_unary_expr '*' expr
| Non_unary_expr '/' expr
| Non_unary_expr '%' expr
| Non_unary_expr '+' expr
| Non_unary_expr '-' expr
| Non_unary_expr Non_unary_expr
| Non_unary_expr '<' expr
| Non_unary_expr LE expr
| Non_unary_expr NE expr
| Non_unary_expr EQ expr
| Non_unary_expr '>' expr
| Non_unary_expr GE expr
| Non_unary_expr '~' expr
| Non_unary_expr NO_MATCH expr
| Non_unary_expr في NAME
| '('multi_expr_list')' في NAME
| Non_unary_expr وnewline_opt expr
| Non_unary_expr أو newline_opt expr
| غير_unary_expr '؟" اكسبر ':' اكسبر
| رقم
| خيط
| lvalue
| إير
| القيمة INCR
| قيمة DECR
| قيمة INCR
| قيمة DECR
| lvalue POW_ASSIGN expr
| lvalue MOD_ASSIGN expr
| lvalue MUL_ASSIGN expr
| القيمة DIV_ASSIGN expr
| lvalue ADD_ASSIGN expr
| lvalue SUB_ASSIGN expr
| lvalue '=' expr
| FUNC_NAME '(' expr_list_opt ')'
/* لا يسمح بوجود مسافة بيضاء قبل '(' */
| BUILTIN_FUNC_NAME '(' expr_list_opt ')'
| BUILTIN_FUNC_NAME
| وظيفة غير_unary_input_function
;

print_expr_list_opt : /* فارغ */
| print_expr_list
;

print_expr_list : print_expr
| print_expr_list '،' newline_opt print_expr
;

print_expr : unary_print_expr
| Non_unary_print_expr
;

unary_print_expr : '+' print_expr
| '-' print_expr
| unary_print_expr '^' print_expr
| unary_print_expr '*' print_expr
| unary_print_expr '/' print_expr
| unary_print_expr '%' print_expr
| unary_print_expr '+' print_expr
| unary_print_expr '-' print_expr
| unary_print_expr Non_unary_print_expr
| unary_print_expr '~' print_expr
| unary_print_expr NO_MATCH print_expr
| unary_print_expr في NAME
| unary_print_expr و newline_opt print_expr
| unary_print_expr أو newline_opt print_expr
| unary_print_expr '؟" print_expr ':' print_expr
;

Non_unary_print_expr : '(' expr ')'
| '!' print_expr
| Non_unary_print_expr '^' print_expr
| Non_unary_print_expr '*' print_expr
| Non_unary_print_expr '/' print_expr
| Non_unary_print_expr '%' print_expr
| Non_unary_print_expr '+' print_expr
| Non_unary_print_expr '-' print_expr
| Non_unary_print_expr Non_unary_print_expr
| Non_unary_print_expr '~' print_expr
| Non_unary_print_expr NO_MATCH print_expr
| Non_unary_print_expr في NAME
| '('multi_expr_list')' في NAME
| Non_unary_print_expr وnewline_opt print_expr
| Non_unary_print_expr أو newline_opt print_expr
| Non_unary_print_expr '?' print_expr ':' print_expr
| رقم
| خيط
| lvalue
| إير
| القيمة INCR
| قيمة DECR
| قيمة INCR
| قيمة DECR
| القيمة POW_ASSIGN print_expr
| القيمة MOD_ASSIGN print_expr
| lvalue MUL_ASSIGN print_expr
| القيمة DIV_ASSIGN print_expr
| lقيمة ADD_ASSIGN print_expr
| القيمة SUB_ASSIGN print_expr
| lvalue '=' print_expr
| FUNC_NAME '(' expr_list_opt ')'
/* لا يسمح بوجود مسافة بيضاء قبل '(' */
| BUILTIN_FUNC_NAME '(' expr_list_opt ')'
| BUILTIN_FUNC_NAME
;

القيمة: الاسم
| الاسم '[' expr_list ']'
| '$' إكسبر
;

وظيفة غير_unary_input_function : simple_get
| simple_get '<' expr
| غير_unary_expr '|' simple_get
;

وظيفة_unary_input_ : unary_expr '|' simple_get
;

simple_get: الحصول على الخط
| الحصول على قيمة l
;

newline_opt : /* فارغ */
| newline_opt NEWLINE
;

وفي هذا النحو عدة غموض يجب حلها على النحو التالي:

* يجب أن تكون أسبقية المشغل والترابط كما هو موضح في طاولات 4-1، التعبيرات
in تقليل الأولوية in AWK.

* في حالة الغموض، أ آخر يجب أن يرتبط بما سبقه مباشرة
if من شأنها أن تلبي القواعد.

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

كل تعبير في AWK يجب أن يتوافق البرنامج مع قواعد الأسبقية والترابط،
حتى عندما لا تكون هناك حاجة لذلك لحل الغموض. على سبيل المثال، لأن "$" أعلى
الأسبقية من '++'، السلسلة "$x++−−" ليس صحيحا AWK التعبير، على الرغم من أنه هو
تم تحليلها بشكل لا لبس فيه من قبل القواعد كما "$(x++)−−".

إحدى القواعد التي قد لا تكون واضحة من القواعد الرسمية هي أين
الشخصيات مقبولة هناك العديد من المواضع الواضحة مثل إنهاء أ
بيان، و أ يمكن استخدامها للهروب الحروف بين أي
الرموز المعجمية. فضلاً عن ذلك، شخصيات بدون يمكن للشخصيات
اتبع الفاصلة، والقوس المفتوح، والعامل المنطقي AND ("&&") ، عامل التشغيل المنطقي ("||"),
القادم do الكلمة المفتاحية آخر الكلمة الأساسية، وقوس الإغلاق لـ if, لـ أو في حين
إفادة. على سبيل المثال:

{ طباعة $ 1،
$2 }

معجمي الاتفاقيات
الاتفاقيات المعجمية ل AWK البرامج، فيما يتعلق بالقواعد السابقة، يجب أن يكون
كما يلي:

1. باستثناء ما ذكر، AWK يجب أن يتعرف على أطول رمز ممكن أو بداية محددة
عند نقطة معينة.

2. يجب أن يتكون التعليق من أي أحرف تبدأ بـ شخصية
ويتم إنهاؤها بواسطة، ولكن باستثناء التكرار التالي لـ، أ . التعليقات يجب
ليس لها أي تأثير، إلا لتحديد الرموز المعجمية.

3. ال يجب التعرف عليه كرمز خط جديد.

4 ا الحرف متبوعًا مباشرة بـ أ لن يكون لها أي تأثير.

5. الرمز STRING يجب أن يمثل ثابت السلسلة. يجب أن يبدأ ثابت السلسلة بـ
الشخصية "" ". ضمن ثابت السلسلة، أ يجب أن يكون الطابع
يعتبر بداية تسلسل الهروب كما هو محدد في الجدول في القاعدة
حجم التعاريف من POSIX.1-2008 ، باب 5, قم بتقديم شكل التدوين ("\\", '\أ', '\ب',
'\F', '\ن', "\ r", "\ t", '\الخامس'). وبالإضافة إلى ذلك، فإن تسلسل الهروب في طاولات 4-2، هرب
متواليات in AWK يجب الاعتراف بها. أ لا يجب أن يحدث داخل سلسلة
ثابت. يجب إنهاء ثابت السلسلة من خلال أول ظهور غير قابل للإلغاء لـ
الشخصية "" " بعد الذي يبدأ ثابت السلسلة. قيمة ال
يجب أن تكون السلسلة هي تسلسل جميع الأحرف التي لم يتم إلغاؤها وقيم الهروب
تسلسلات بين، ولكن لا تشمل، الحدود بين الاثنين "" " حرفا.

6. الرمز ERE يمثل ثابت التعبير العادي الممتد. ثابت ERE
يجب أن يبدأ بـ شخصية. ضمن ثابت ERE، أ
يجب اعتبار الحرف بداية لتسلسل الهروب كما هو محدد في الجدول
حجم التعريفات الأساسية لـ POSIX.1-2008 ، باب 5, قم بتقديم شكل التدوين. في
بالإضافة إلى ذلك، تسلسل الهروب في طاولات 4-2، هرب متواليات in AWK يجب أن تكون
معروف. يجب أن يضمن التطبيق أن أ لا يحدث داخل ERE
ثابت. يجب إنهاء ثابت ERE من خلال أول حدث غير مهرب لـ
الحرف بعد الحرف الذي يبدأ ثابت ERE. المنتظم الممتد
يجب أن يكون التعبير الذي يمثله ثابت ERE هو تسلسل كل ما لم يتم تجاوزه
أحرف وقيم تسلسل الهروب بين الاثنين، ولكن ليس بما في ذلك
ترسيم الشخصيات.

7. أ لا يكون له أي تأثير، إلا لتحديد الرموز المعجمية أو داخلها STRING or
ERE الرموز.

8. الرمز عدد يجب أن يمثل ثابتًا رقميًا. يجب أن يكون شكلها وقيمتها الرقمية
إما أن تكون معادلة ل ثابت العشري العائم الرمز المميز كما هو محدد بواسطة ISO C
قياسي، أو يجب أن يكون عبارة عن سلسلة من الأرقام العشرية ويجب تقييمها على أنها
عدد صحيح ثابت في النظام العشري. بالإضافة إلى ذلك، قد تقبل التطبيقات الثوابت الرقمية
مع النموذج والقيمة الرقمية المكافئة لـ ثابت سداسي عشري و
ثابت سداسي عشري عائم الرموز المميزة على النحو المحدد في معيار ISO C.

إذا كانت القيمة كبيرة جدًا أو صغيرة جدًا بحيث لا يمكن تمثيلها (راجع القسم 1.1.2,
المفاهيم مستمد تبدأ من القادم ISO C المجموعة الأساسية )، السلوك غير محدد.

9. تسلسل من الشرطة السفلية والأرقام والحروف الهجائية من مجموعة الأحرف المحمولة
(انظر مجلد التعريفات الأساسية لـ POSIX.1‐2008، القسم 6.1, المحمول حرف
بكج)، بدءا من أو الحرف الأبجدي، يعتبر أ
كلمة واحدة.

10. الكلمات التالية هي كلمات رئيسية يجب التعرف عليها كرموز فردية؛ ال
اسم الرمز المميز هو نفس الكلمة الأساسية:

ابدأ حذف END وظيفة in printf
استراحة do خروج الحصول على خط التالي عائد أعلى
استمر آخر لـ if طباعة في حين

11. الكلمات التالية هي أسماء الوظائف المضمنة ويجب التعرف عليها على أنها
رمز BUILTIN_FUNC_NAME:

أتان2 com.gsub سجل انقسم فرعية العلبة
اغلق مؤشر مباراة sprintf SUBSTR
كوس مادبا صف الجذر التربيعي نظام
إكسب الطول بدون سراند أدنى

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

12. الرمز اسم يجب أن تتكون من كلمة ليست كلمة أساسية أو اسمًا مدمجًا
الوظيفة ولا يتبعها على الفور (بدون أي محددات) بواسطة "("
حرف.

13. الرمز FUNC_NAME يجب أن تتكون من كلمة ليست كلمة رئيسية أو اسما ل
وظيفة مدمجة، يتبعها مباشرة (بدون أي محددات) الدالة "(" حرف.
إنّ كافة أنواع عهود الـ "(" لا يجوز تضمين الحرف كجزء من الرمز المميز.

14. يجب التعرف على التسلسلات التالية المكونة من حرفين باعتبارها الرموز المميزة:

┌────────────────────┬─────────┬─── ───────┐
رمز الاسمتسلسلرمز الاسمتسلسل
├────────────────────┼─────────┼─── ───────┤
ADD_ASSIGN │ += │ لا تطابق │ !~ │
SUB_ASSIGN │ −= │ EQ │ == │
MUL_ASSIGN │ *= │ LE │ <= │
DIV_ASSIGN │ /= │ GE │ >= │
MOD_ASSIGN │ %= │ NE │ != │
POW_ASSIGN │ ^= │ إنكر │ ++ │
OR │ || │ ديكر │ −− │
لأي لبس │ && │ ألحق │ >> │
└─────────┴──────────┴─────────┴─── ───────┘
15. يجب التعرف على الأحرف الفردية التالية كرموز مميزة أسماؤها
حرف:

{ } ( ) [ ] , ; + - * % ^ ! > < | ? : " " $ =

هناك غموض معجمي بين الرمز المميز ERE والرموز '/' و DIV_ASSIGN.
عندما يبدأ تسلسل الإدخال بـ a الحرف في أي سياق نحوي حيث
رمز '/' or DIV_ASSIGN يمكن أن يظهر باعتباره الرمز المميز التالي في برنامج صالح، الأطول من
يجب التعرف على هذين الرمزين اللذين يمكن التعرف عليهما. في أي نحوي آخر
السياق حيث الرمز المميز ERE يمكن أن يظهر كالرمز المميز التالي في برنامج صالح، الرمز المميز
ERE يجب الاعتراف بها.

EXIT الوضع


يتم إرجاع قيم الخروج التالية:

0 تمت معالجة جميع ملفات الإدخال بنجاح.

> 0 حدث خطأ.

يمكن تغيير حالة الخروج داخل البرنامج باستخدام خروج التعبير.

عواقب OF أخطاء


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

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

إنّ كافة أنواع عهود الـ متابعيك أقسام . غنيا بالمعلومات.

تطبيق الاستعمال


إنّ كافة أنواع عهود الـ مؤشر, الطول, مباراةو SUBSTR لا ينبغي الخلط بين الوظائف وما شابه ذلك
وظائف في معيار ISO C؛ ال AWK تتعامل الإصدارات مع الأحرف، في حين أن ISO C
يتعامل القياسية مع بايت.

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

أمثلة


إنّ كافة أنواع عهود الـ AWK البرنامج المحدد في سطر الأوامر يتم تحديده بسهولة ضمن برنامج واحد
اقتباسات (على سبيل المثال، "برنامج') للتطبيقات التي تستخدم sh، لان AWK البرامج عادة
تحتوي على أحرف خاصة بالصدفة، بما في ذلك علامات الاقتباس المزدوجة. في الحالات
حيث AWK يحتوي البرنامج على أحرف اقتباس مفردة، وعادة ما يكون من الأسهل تحديدها
معظم البرنامج عبارة عن سلاسل ضمن علامات اقتباس مفردة متسلسلة بواسطة الصدفة مع علامات الاقتباس
أحرف الاقتباس المفردة. على سبيل المثال:

AWK '/'\''/ { طباعة "يقتبس:"، $0 }'

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

فيما يلي أمثلة بسيطة AWK برامج:

1. اكتب إلى المخرجات القياسية جميع أسطر الإدخال التي يكون الحقل 3 أكبر من 5:

$3 > 5

2. اكتب كل سطر عاشر:

(ن.ر % 10) == 0

3. اكتب أي سطر بسلسلة فرعية مطابقة للتعبير العادي:

/(G|D)(2[0−9][[:alpha:]]*)/

4. اطبع أي سطر بسلسلة فرعية تحتوي على أ "ز" or 'د'، تليها سلسلة من
الأرقام والحروف. يستخدم هذا المثال فئات الأحرف أرقام و ألفا لمطابقة
أرقام وأحرف أبجدية مستقلة عن اللغة على التوالي:

/(G|D)([[:digit:][:alpha:]]*)/

5. اكتب أي سطر يتطابق فيه الحقل الثاني مع التعبير العادي والرابع
الحقل لا:

$2 " " /xyz/ && $4 ! " " /xyz/

6. اكتب أي سطر يحتوي فيه الحقل الثاني على أ :

$2 " " /\\/

7. اكتب أي سطر يحتوي فيه الحقل الثاني على أ . لاحظ أن
-يتم تفسير الهروب مرتين؛ مرة واحدة في المعالجة المعجمية للسلسلة
ومرة واحدة في معالجة التعبير العادي:

$2 " " "\\\\"

8. اكتب الحقل الثاني إلى الأخير والأخير في كل سطر. افصل بين الحقول بواسطة أ
:

{OFS = "؛ طباعة $(NF−1), $NF}

9. اكتب رقم السطر وعدد الحقول في كل سطر. السلاسل الثلاثة
يمثل رقم السطر، و ، وعدد الحقول متسلسلة
ويتم كتابة هذه السلسلة إلى الإخراج القياسي:

{مطبعة NR "" NF}

10. كتابة أسطر أطول من 72 حرفاً:

الطول (0 دولار) > 72

11. اكتب الحقلين الأولين بالترتيب المعاكس مفصولين بـ OFS:

{ طباعة $ 2، $1 }

12. نفس الشيء، مع فصل حقول الإدخال بـ a أو و الشخصيات، أو
كلاهما:

ابدأ { FS = "،[ \t]*|[ \t]+" }
{ طباعة $ 2، $1 }

13. أضف العمود الأول واطبع المجموع والمتوسط:

{s += $1 }
END {مطبعة "مجموع is ", s, " المتوسط يكون"، ق/نر}

14. اكتب الحقول بترتيب عكسي، واحد في كل سطر (يتم إخراج عدة أسطر لكل سطر):

{ لـ (i = نف. i > 0; −−ط) طباعة $i }

15. كتابة كافة الأسطر بين تكرارات السلاسل بداية و توقف:

/يبدأ/، /قف/

16. اكتب جميع السطور التي يختلف حقلها الأول عن الحقل السابق:

$1 != السابق { طباعة. السابق = $1 }

17. محاكاة صدى:

ابدأ {
لـ (i = 1; i < ARGC. ++ ط)
برينتف ("%s%s"، أرجف [أنا]، i==ARGC−1؟"\n":": ")
}

18. اكتب بادئات المسار الموجودة في PATH متغير البيئة، واحد لكل سطر:

ابدأ {
n = انقسم (البيئة ["المسار"]، مسار، ":):")
لـ (i = 1; i <= n; ++ ط)
طباعة المسار [i]
}

19. إذا كان هناك ملف اسمه إدخال تحتوي على رؤوس صفحات النموذج: رقم الصفحة

وملف اسمه برنامج يحتوي على:

/صفحة/ { $2 = ن ++ ؛ }
{ طباعة }

ثم سطر الأوامر:

AWK − و برنامج n=5 إدخال

يطبع الملف إدخال- ملء أرقام الصفحات بدءًا من الرقم 5.

الأساس المنطقي


ويستند هذا الوصف على الجديد AWK، ``ناوك''، (انظر المشار إليه إنّ كافة أنواع عهود الـ AWK
برمجة وتطوير اللغة) ، والتي قدمت عددًا من الميزات الجديدة للتاريخ AWK:

1. كلمات رئيسية جديدة: حذف, do, وظيفة, عائد أعلى

2. وظائف مدمجة جديدة: أتان2, اغلق, كوس, com.gsub, مباراة, صف, بدون, سراند, فرعية, نظام

3. متغيرات جديدة محددة مسبقًا: FNR, ARGC, ARGV, رستارت, طول, ثانوية

4. عوامل التعبير الجديدة: ?, :, ,, ^

5. ال FS المتغير والوسيطة الثالثة ل انقسم، يتم التعامل معها الآن على أنها عادية ممتدة
التعبيرات.

6. تم تغيير أسبقية عامل التشغيل لتتوافق بشكل أوثق مع لغة C. مثالان
من التعليمات البرمجية التي تعمل بشكل مختلف هي:

في حين ( n /= 10 > 1)
if ("أسبوع"" ~ /بوك/)

تمت إضافة العديد من الميزات بناءً على التطبيقات الأحدث لـ AWK:

* حالات متعددة − و com.progfile مسموح.

* الخيار الجديد مهمة.

* المتغير الجديد المحدد مسبقا البيئة.

* وظائف مدمجة جديدة العلبة و أدنى.

* تتم إضافة المزيد من إمكانيات التنسيق إلى printf لتتناسب مع معيار ISO C.

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

التعبيرات العادية في AWK لقد تم تمديدها إلى حد ما من التطبيقات التاريخية إلى
اجعلها مجموعة شاملة خالصة من التعبيرات العادية الموسعة، كما هو محدد في POSIX.1‐2008 (انظر
حجم التعريفات الأساسية لـ POSIX.1-2008 ، القسم 9.4, ممتد منتظم التعبيرات).
الامتدادات الرئيسية هي ميزات التدويل وتعبيرات الفاصل الزمني. تاريخي
تطبيقات AWK لقد دعمت منذ فترة طويلة -تسلسلات الهروب كامتداد ل
التعبيرات العادية الموسعة، وتم الاحتفاظ بهذا الامتداد على الرغم من عدم الاتساق
مع المرافق الأخرى. عدد تسلسلات الهروب التي تم التعرف عليها في كلا النظامين الممتدين
تباينت التعبيرات والسلاسل (تزداد عمومًا بمرور الوقت) بين التطبيقات.
تتضمن المجموعة المحددة بواسطة POSIX.1‐2008 معظم التسلسلات المعروفة بأنها مدعومة بواسطة الشعبية
التطبيقات وبمعيار ISO C. تسلسل واحد غير معتمد هو
تهرب القيمة السداسية العشرية بدءًا من "x". وهذا من شأنه أن يسمح بالتعبير عن القيم بأكثر من ذلك
من 9 بت لاستخدامها في الداخل AWK كما هو الحال في معيار ISO C. ومع ذلك، لأن بناء الجملة هذا
له طول غير محدد، ولا يسمح للحرف اللاحق أن يكون a
رقم سداسي عشري. يمكن التعامل مع هذا القيد في لغة C باستخدام
تسلسل السلسلة المعجمية. في ال AWK اللغة، يمكن أن يكون التسلسل أيضًا حلاً
للسلاسل، ولكن ليس للتعبيرات العادية الموسعة (إما رموز ERE المعجمية أو
السلاسل المستخدمة ديناميكيًا كتعبيرات عادية). وبسبب هذا القيد، الميزة
لم تتم إضافته إلى POSIX.1‐2008.

عندما يتم استخدام متغير سلسلة في سياق حيث يكون التعبير العادي الممتد بشكل طبيعي
يظهر (حيث يتم استخدام الرمز المعجمي ERE في القواعد) لا تحتوي السلسلة
الحرفي الشخصيات.

بعض إصدارات AWK السماح للنموذج:

ظائفها اسم (الوسائط، ) { البيانات }

وهذا ما استنكره مؤلفو اللغة، وطلبوا ألا يكون كذلك
محدد.

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

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

{
a = "+2"
b = 2
if (ن.ر % 2)
c = a + b
if (a == b)
طباعة "رقمي مقارنة"
آخر
طباعة "خيط مقارنة"
}

سيتم إجراء مقارنة رقمية (ومقارنة رقمية للإخراج) لكل رقم فردي
سطر، ولكن قم بإجراء مقارنة سلسلة (ومقارنة سلسلة الإخراج) لكل زوج
خط مرقم. ويضمن POSIX.1‐2008 أن تكون المقارنات رقمية إذا لزم الأمر. مع
التطبيقات التاريخية، البرنامج التالي:

ابدأ {
OFMT = "%ه"
طباعة 3.14
OFMT = "٪F"
طباعة 3.14
}

سوف الإخراج "3.140000e+00" مرتين، لأنه في الثانية طباعة بيان الثابت
"3.14" سيكون لها قيمة سلسلة من التحويل السابق. يتطلب POSIX.1‐2008 ذلك
مخرج الثاني طباعة بيان يكون "3.140000". السلوك التاريخي
كان يُنظر إلى عمليات التنفيذ على أنها غير بديهية للغاية ولا يمكن التنبؤ بها.

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

ابدأ {
ص[1.5] = 1
OFMT = "%ه"
طباعة ص[1.5]
}

ولذلك متغير جديد كونففمت، كانت مقدمة. ال OFMT يقتصر المتغير الآن على
تؤثر على تحويلات الإخراج من الأرقام إلى سلاسل و كونففمت يستخدم للداخلية
التحويلات، مثل المقارنات أو فهرسة المصفوفة. القيمة الافتراضية هي نفسها
لـ OFMT، وذلك ما لم يتغير البرنامج كونففمت (وهو ما لن يفعله أي برنامج تاريخي).
سيتلقى السلوك التاريخي المرتبط بتحويلات السلسلة الداخلية.

بوسيكس AWK يتم تحديد الاتفاقيات المعجمية والنحوية بشكل أكثر رسمية من غيرها
مصادر. ومرة أخرى كان القصد هو تحديد الممارسة التاريخية. اتفاقية واحدة قد
لا تكون واضحة من القواعد الرسمية كما هو الحال في الأوصاف اللفظية الأخرى حيث
الشخصيات مقبولة هناك العديد من المواضع الواضحة مثل إنهاء أ
بيان، و أ يمكن استخدامها للهروب الحروف بين أي
الرموز المعجمية. فضلاً عن ذلك، شخصيات بدون يمكن للشخصيات
اتبع الفاصلة، والقوس المفتوح، والعامل المنطقي AND ("&&")، عامل تشغيل منطقي
("||")، و do الكلمة المفتاحية آخر الكلمة الأساسية، وقوس الإغلاق لـ if, لـ أو
في حين إفادة. على سبيل المثال:

{ طباعة $ 1،
$2 }

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

يتطلب POSIX.1‐2008 عدة تغييرات من التطبيقات التاريخية من أجل الدعم
تدويل. ربما يكون الأكثر دقة هو استخدام العلامة العشرية
الشخصية التي يحددها LC_NUMERIC فئة اللغة، في تمثيلات
أرقام النقطة العائمة. يتم استخدام هذا الحرف الخاص بالإعدادات المحلية في التعرف على الأرقام
الإدخال، وفي التحويل بين السلاسل والقيم الرقمية، وفي تنسيق الإخراج.
ومع ذلك، بغض النظر عن اللغة، الحرف (حرف العلامة العشرية لل
لغة POSIX) هي حرف الفاصلة العشرية الذي تم التعرف عليه في المعالجة AWK برامج
(بما في ذلك المهام في وسيطات سطر الأوامر). هذا هو في الأساس نفس الاتفاقية
كما هو مستخدم في معيار ISO C. الفرق هو أن لغة C تتضمن
مجموعة() ، والتي تسمح للتطبيق بتعديل الإعدادات المحلية الخاصة به. و لهذا
القدرة، يبدأ تطبيق C في التنفيذ مع تعيين الإعدادات المحلية الخاصة به على الإعدادات المحلية C، وفقط
يتم تنفيذه في اللغة المحددة للبيئة بعد استدعاء صريح لـ مجموعة().
ومع ذلك، فإن إضافة مثل هذه الميزة الجديدة المتقنة إلى AWK كان ينظر إلى اللغة على أنها
غير مناسب لـ POSIX.1‐2008. من الممكن تنفيذ AWK البرنامج صراحة في أي
اللغة المطلوبة عن طريق ضبط البيئة في الصدفة.

السلوك غير المحدد الناتج عن NULs في التعبيرات العادية الموسعة يسمح بالمستقبل
ملحقات لجنو البله برنامج لمعالجة البيانات الثنائية.

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

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

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

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

الحصول على خط < "A" "ب"

يتم تحليلها على النحو التالي:

( الحصول على خط < "A" ) "ب"

على الرغم من أن الكثيرين قد يجادلون بأن القصد كان ذلك الملف ab يجب أن تقرأ. لكن:

الحصول على خط < "x" + 1

يوزع على النحو التالي:

الحصول على خط < ( "x" + 1 )

تحدث مشاكل مماثلة مع | نسخة من الحصول على خط، وخاصة في تركيبة مع $.
فمثلا:

$"صدى أهلاً" | الحصول على خط

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

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

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

سمحت بعض التطبيقات التاريخية باستدعاء بعض الوظائف المضمنة بدونها
قائمة وسيطات، والنتيجة هي قائمة وسيطات افتراضية تم اختيارها في بعض "المعقولة"
طريق. استخدام الطول كمرادف لـ الطول (0 دولار) هو الوحيد من هذه الأشكال
يُعتقد أنها معروفة على نطاق واسع أو مستخدمة على نطاق واسع؛ تم توثيق هذا النموذج الخاص في مختلف
الأماكن (على سبيل المثال، معظم التاريخية AWK الصفحات المرجعية، وإن لم يكن في المشار إليها
إنّ كافة أنواع عهود الـ AWK برمجة وتطوير اللغة) كممارسة مشروعة. مع هذا الاستثناء الافتراضي
لقد كانت قوائم الوسائط دائمًا غير موثقة ومحددة بشكل غامض، وهي ليست كذلك على الإطلاق
واضح كيف (أو إذا) ينبغي تعميمها على الوظائف المحددة من قبل المستخدم. لا يضيفون أي فائدة
الوظائف وتمنع الامتدادات المستقبلية المحتملة التي قد تحتاج إلى تسمية الوظائف
دون أن يدعوهم. ويبدو أن عدم توحيدها هو أبسط مسار. المعيار
اعتبر المطورون ذلك الطول ومع ذلك، فهو يستحق معاملة خاصة منذ أن كان كذلك
تم توثيقه في الماضي ويمكن استخدامه بشكل كبير في البرامج التاريخية.
وبناءً على ذلك، أصبح هذا الاستخدام شرعيًا، لكن الإصدار 5 أزال التقادم
وضع علامات على التطبيقات المطابقة لـ XSI والعديد من التطبيقات المطابقة
تعتمد على هذه الميزة.

In فرعية و com.gsub، إذا استبدل هي سلسلة حرفية (الرمز المعجمي STRING)، ثم اثنين
متتابع يجب استخدام الأحرف في السلسلة لضمان وجود حرف واحد
سوف تسبق عندما يتم تمرير السلسلة الناتجة إلى
وظيفة. (على سبيل المثال، لتحديد حرف واحد في السلسلة البديلة، استخدم
com.gsub(ERE, "\\ &")).

تاريخيا، الشخصية الخاصة الوحيدة في استبدل حجة فرعية و com.gsub سلسلة
كانت الوظائف ("&") الحرف ويسبقه بـ
تم استخدام الحرف لإيقاف معناه الخاص.

قدم الوصف الوارد في معيار ISO POSIX‐2:1993 سلوكًا مثل أن
كانت الشخصية شخصية خاصة أخرى ولم يتم تحديد ما إذا كان هناك
كانت أي شخصيات خاصة أخرى. قدم هذا الوصف العديد من قابلية النقل
المشاكل، وبعضها موصوف أدناه، وهكذا تم استبداله بالمزيد
الوصف التاريخي. بعض المشاكل تشمل:

* تاريخيًا، لإنشاء سلسلة بديلة، يمكن استخدام البرنامج النصي com.gsub(ERE, "\\ &"),
ولكن مع الصياغة القياسية ISO POSIX‐2:1993، كان من الضروري استخدامها com.gsub(ERE,
"\\\\&"). ال يتم مضاعفة الأحرف هنا لأن جميع القيم الحرفية للسلسلة هي
تخضع للتحليل المعجمي، الأمر الذي من شأنه أن يقلل من كل زوج من شخصيات ل
واحد قبل أن يتم تمريره إلى com.gsub.

* نظرًا لأنه لم يتم تحديد الأحرف الخاصة للنصوص البرمجية المحمولة
ضمان طباعة الأحرف بشكل حرفي، ويجب أن يسبق كل حرف
مع . (على سبيل المثال، كان يجب استخدام برنامج نصي محمول com.gsub(ERE, "\\أهلاً") إلى
إنتاج سلسلة بديلة من "أهلاً".)

لم يتم وصف وصف المقارنات في معيار ISO POSIX-2:1993 بشكل صحيح
الممارسة التاريخية بسبب الطريقة التي تتم بها مقارنة السلاسل الرقمية بالأرقام. ال
القواعد الحالية تسبب الكود التالي:

if (0 == "000")
طباعة "غريب، لكن حقيقي"
آخر
طباعة "ليس حقيقي"

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

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

يجب أيضًا معاملة المتغيرات المخصصة لسلسلة رقمية على أنها سلسلة رقمية.
(على سبيل المثال، يمكن نشر فكرة السلسلة الرقمية عبر المهام).
المقارنات، يجب التعامل مع جميع المتغيرات التي لها قيمة غير مهيأة كقيمة رقمية
معامل التقييم إلى القيمة الرقمية صفر.

تتضمن المتغيرات غير المهيأة جميع أنواع المتغيرات بما في ذلك الكميات القياسية وعناصر المصفوفة
والحقول. تعريف القيمة غير المهيأة في المتغيرات و ملصقات خاصة المتغيرات is
ضروري لوصف القيمة الموضوعة على المتغيرات غير المهيأة وعلى الحقول الموجودة
صالحة (على سبيل المثال، < NF دولار) ولكن لا تحتوي على أحرف فيها ولوصف كيفية حدوث ذلك
يجب استخدام المتغيرات في المقارنات. حقل صالح، مثل $1، الذي لا يحتوي على أحرف
حيث يمكن الحصول عليه من سطر الإدخال "\ر\ر" متى خ س='\ر'. تاريخياً،
مقارنة (1 دولار10) تم عدديا بعد التقييم $1 إلى القيمة صفر.

تمت إزالة العبارة ``... يجب أيضًا أن تحتوي على القيمة الرقمية للسلسلة الرقمية''
من عدة أقسام من معيار ISO POSIX‐2:1993 لأنه يحدد غير ضروري
تفاصيل التنفيذ. ليس من الضروري أن يحدد POSIX.1‐2008 هذه الكائنات
يتم تعيين قيمتين مختلفتين. من الضروري فقط تحديد ما إذا كانت هذه الكائنات موجودة
تقييم إلى قيمتين مختلفتين اعتمادا على السياق.

التطبيقات التاريخية لـ AWK لم يتم تحليل الأعداد الصحيحة السداسية العشرية أو الثوابت العائمة
مثل "0xa" و "0xap0". بسبب الرقابة، إصدارات 2001 حتى 2004 من هذا
الدعم القياسي المطلوب للثوابت العائمة السداسية العشرية. وكان هذا بسبب
إشارة إلى في ل(). هذا الإصدار من المعيار يسمح ولكن لا يتطلب
تطبيقات للاستخدام في ل() ويتضمن وصفًا لكيفية ظهور أرقام الفاصلة العائمة
معترف بها كبديل لمطابقة السلوك التاريخي. القصد من هذا التغيير هو
السماح للتطبيقات بالتعرف على ثوابت الفاصلة العائمة وفقًا لأي من
معيار ISO/IEC 9899:1990 أو معيار ISO/IEC 9899:1999، وللسماح (ولكن لا يتطلب)
تطبيقات للتعرف على ثوابت الأعداد الصحيحة الست عشرية.

التطبيقات التاريخية لـ AWK لم يدعم اللانهاية الفاصلة العائمة وNaNs في
الرقمية سلاسل؛ على سبيل المثال ، "-INF" و "نان". ومع ذلك، فإن التطبيقات التي تستخدم في ل() أو
سترتود() وظائف للقيام بالتحويل التقطت دعمًا لهذه القيم إذا استخدمت
الإصدار القياسي ISO/IEC 9899:1999 للوظيفة بدلاً من المعيار ISO/IEC 9899:1990
إصدار. وبسبب الرقابة، لم يتم تطبيق هذا المعيار في إصدارات 2001 حتى 2004
السماح بدعم اللانهاية وNaNs، ولكن في هذه المراجعة يُسمح بدعم (ولكن ليس
مطلوب). هذا تغيير صامت في سلوك AWK البرامج؛ على سبيل المثال، في
لغة POSIX التعبير:

("-INF" + 0 < 0)

في السابق كانت القيمة 0 لأن "-INF" تم تحويلها إلى 0، ولكن الآن قد تكون لها القيمة 0 أو
1.

المستقبل طريقة الاستعمال


لا شيء.

استخدم awkposix عبر الإنترنت باستخدام خدمات onworks.net


خوادم ومحطات عمل مجانية

قم بتنزيل تطبيقات Windows و Linux

أوامر لينكس

Ad




×
الإعلانات
❤️تسوق أو احجز أو اشترِ هنا - بدون تكلفة، مما يساعد على إبقاء الخدمات مجانية.