أوك
اللغة الخدمية AWK هو استخراج العبارات وأداة لعمل تقارير التي تستخدم لغة برمجة نصية القائمة على العبارات، التي تتكون من مجموعة من الإجراءات التي يتعين اتخاذها ضد عبارات مكتوبة (سواء في الملفات أوجداول العبارات) لغرض إعداد تقارير منسقة سلسلة أغراض. اللغة التي يستخدمها awk على نطاق واسع هي نوع العبارات المسلسلة، المصفوفات الترابطية (وهذه هي، مصفوفات فهرستها من مفتاح السلاسل)، وأشكال تعابير نمطية.
AWK هي واحدة من الأدوات القديمة لتظهر في النسخة 7 من يونكس Version 7 Unix واكتسبت شعبية كوسيلة لإضافة مميزات حسابية إلى مجرى يونيكس. وهناك نسخة من لغة AWK هي السمة المشتركة من حوالي كل نظام تشغيل من يونيكس الحديثة المتاحة اليوم. AWK مذكورة في مواصفات يونكس الواحدة باعتبارها وسيلة إلزامية لنظام تشغيل يونيكس. بالإضافة إلى غلاف بورن Bourne shell، AWK هي لغة البرمجة الوحيدة الآخرى المتاحة في بيئة يونيكس القياسية.[١] وهي أيضا أثبتت وجودها بين الأوامر التي تتطلبها المواصفات القياسية لقاعدةيونكس.[٢] تطبيقات AWK موجودة كبرمجيات مركبة تقريبا لجميع أنظمة التشغيل الأخرى. citation needed
تم إنشاء AWK في مختبرات بيل في السبعينات ،[٣] واسمها مشتق من أسماء أسرة مؤلفيها -- ألفرد أهو وبيتر واينبرغر وبرايان كيرنيغان. الاسم لا ينطق كسلسلة من الإحرف المنفصلة وإنما لصوت نفس اسم الأوك من الطيور (الذي يعمل كشعار للغة مثل ما على غلاف كتاب لغة برمجة أووك The AWK Programming Language- الكتاب غالبا ما يشير إليه بالاختصار TAPL)، عندما كتبت أووك كانت كافة الأحرف صغيرة، وتشير إلى يونكس أو برنامج Plan 9 الذي يقوم بتشغيل برامج أخرى مكتوبة بلغة البرمجة AWK.
قوة واختصارية، ,و حدود برامج AWK التي صدرت مبكراً أوحت ل لاري وول Larry Wall ليكتب بيرل Perl كلغة جديدة ،أكثر قوة، POSIX AWK و gawk (GNU AWK) تم تعريفهم. على الرغم من أن AWK وsed تم تصميمهما لدعم البرامج واحدة السطور، حتى مختبرات بيل القديمة مستخدمي أووكAWK كثيرا ما كتبوا برامج أووك كبيرة وجيدة التنظيم. رغم مساحتها المحدودة المقصود استخدامها، AWK هي تورينج كاملة.[٤]
تركيب برامج أووك AWK programs
AWK "هي لغة لتجهيز ملفات النص. يعامل الملف ك سلسلة من السجلات، وافتراضياً كل سطر يعتبر سجل. كل سطر ينقسم إلي سلسلة من المجالات، حتى نتمكن من التفكير في الكلمة الأولى في السطر على أنها الحقل الأول، والكلمة الثانية كالحقل الثاني، وهلم جرا. برنامج أووك من sic سلسلة من عبارات نمط العمل. AWK تقرأ إدخال السطر في وقت واحد. السطر ليتم فحصه لكل نمط في البرنامج، ولكل نمط يطابقه، يتم تنفيذ العمل المرتبطة به."- Alfred V. Aho [٥]
برنامج AWK هو سلسلة من أزواج نمط العمل، كما هو مكتوب :
condition { action }
حيث الحال condition هو عادة تعبير والعمل action هو عبارة عن سلسلة من الأوامر. يتم تقسيم المدخلات إلي سجلات، حيث السجلات الافتراضية يتم فصلها بأحرف السطرالجديد بحيث يتم تقسيم المدخلات إلى خطوط. البرنامج يختبر كل سجل ضد كل من الشروط بدوره، وينفذ العمل لكل تعبير صحيح. قد يتم حذف إما الحال أو العمل. الحالة الافتراضية مطابقة لكل سجل. والإجراء الافتراضي هو طباعة السجل.
بالإضافة إلى تعبير AWK البسيط، مثل foo == 1
or /^foo/
foo == 1 or /^foo/، الشرط يمكن أن يكون أبدأ BEGIN أو أنتهي END مما يسبب تنفيذ الإجراء قبل أو بعد قراءة كل السجلات، أو pattern1، pattern2 الذي يطابق نطاق السجلات بدءا من سجل يطابق pattern1 بما يصل إلى السجل الذي يطابق pattern2 أو يحتويه قبل المحاولة مرة أخرى إلى المطابقة ضد pattern1 على السطور التالية.
بالإضافة إلى العوامل المنطقية أو الحساب العادي، فإن مصطلحات AWK تشمل مشغل التلدة tilde operator، ~، والذي يطابق تعابير نمطية ضد سلسلة. مثل قواعد syntactic sugar, /regexp/ المفيدة دون استخدام مشغل التلدة الذي يطابق ضد السجل الحالي.
أوامر AWK
أوامر AWK هي العبارة التي يتم استبدالها للعمل في الأمثلة أعلاه. أوامر AWK يمكن أن تشمل استدعاءات الوظائف، وتحديد الوظائف المتغير، الحسابات، أو أي مزج من تلك الأوامر. AWK تتضمن دعم العديد من الوظائف، والكثير يقدم من خلال صفات أووك AWK المختلفة. أيضا، بعض الصفات تدعم إدراج ربط ديناميكي للمكتبات مكتبة الربط الديناميكي، والتي يمكنها أيضا توفير المزيد من الوظائف. للإيجاز، الأقواس المجعد المرفقة ({}) سيتم حذفها من هذه الأمثلة.
أمر الطباعة
يتم استخدام أمر الطباعة لإخراج النص. دائما يتم إنهاء إخراج النص مع سلسلة محددة مسبقا تسمى فاصل سجل الإخراج output record separator (ORS) والذي قيمته الافتراضية هي السطر الجديد. أبسط أشكال هذا الأمر هو :
هذا يعرض محتويات السجل الحالي. في أووك AWK، يتم تقسيم السجلات إلى حقول، ويمكن عرضها بشكل منفصل :
- print $1
يعرض الحقل الأول من السجل الحالي
- print $1, $3
يعرض الحقل الأولى والثالثة من السجل الحالي، منفصلين بسلسلة معرفة مسبقا تسمى فاصل حقل الإخراج output field separator (OFS)الذي قيمته الافتراضية هي مسافة واحدة على الرغم من أن هذه الحقول ($X) قد تحمل تشابه للمتغيرات (الرمز $ يشير إلى المتغيرات في بيرل perl)، فإنها تشير في الواقع إلى حقول السجل الحالي. حالة خاصة، $0، تشير إلى السجل بأكمله. في الواقع، الأوامر " print " و" print $0" متطابقة في الوظيفة. أمر الطباعة أيضا يمكن أن يعرض نتائج الحسابات و/ أو استدعاءات الوظائف :
print 3+2 print foobar(3) print foobar(variable) print sin(3-2)
المخرجات يمكن أنترسل إلى ملف :
print "expression" > "file name"
أو عن طريق مجرى :
print "expression" | "command"
المتغيرات المتضمنة
المتغيرات المتضمنة في أووك Awk تشمل متغيرات الحقول : $1, $2, $3، إلخ (($0 للسجل بأكمله). أنها تعطي النص أو القيم في حقول النص الفردية في السجل. وهناك عدد من المتغيرات الأخرى :
- NR: يحتفظ بالعدد الحالي من رقم عدد سجلات الإدخال.
- NF : يحتفظ بالعدد الحالي من رقم عدد سجلات الإدخال وآخر حقل في سجل الإدخال يمكن تحديده بـ$NF.
- FILENAME: يحتوي على اسم ملف الإدخال الحالي.
- FS: يحتوي على "فاصل الحقل" "field separator" رمز مستخدم لتقسيم الحقول في سجل الإدخال. بينما الافتراضي هو "مسافة بيضاء" "white space"، تعنى مسافة ورمز تبويب FS يمكن إعادة تعيينها لرمز آخر لتغيير فاصل الحقل.
- RS: يخزن رمز "فاصل السجل" الحالي. حين، افتراضيا، يكون سطر الإدخال هو سجل الإدخال ،فإن رمز فاصل السجل الافتراضي يكون "سطرجديد ".
- OFS يخزن "فاصل حقل الإخراج"، الذي يفصل بين الحقول عندما يطبعهم أووك AWK. والافتراضي هو رمز "المسافة".
- ORS: يخزن "فاصل سجل الإخراج"، الذي يفصل بين سجلات الإخراج عندما يطبعهم أووك AWK. والافتراضي هو رمز "السطر الجديد".
- OFTM يخزن تنسيق الإخراج الرقمي. التنسيق الافتراضي هو "%.6g"
المتغيرات وقواعد اللغة
أسماء المتغيرات يمكن أن تستخدم أي من الأحرف [A-Za-z0-9_]، مع استثناء الكلمات الرئيسية للغة. المشغل + - / * يعرض الجمع والطرح والضرب والقسمة، على التوالي. لتعاقب السلسلة، ببساطة يضع متغيرين (أو سلسلة الثوابت) بجانب بعضها البعض. واستخدان مسافة اختياري في حالة الترابط بين ثوابت السلسلة، ولكن اسمان متغيران لا يمكن وضعهما بجوار بعضهما البعض دون وجود مسافة بينهما. ثوابت السلسلة محددة بواسطة علامات الاقتباس " المزدوجة. العبارات لا تحتاج إلى النهاية بفاصلة منقوطة. وأخيرا، يمكن إضافة التعليقات إلى البرامج باستخدام # كالحرف الأول على السطر.
الوظائف المحددة بواسطة المستخدم
في شكل مماثل لـ C، تعريفات الوظيفة تتكون من الكلمات الرئيسية للوظائف، اسم الوظيفة وأسماء الوسائط (المتحولات) وجسم الوظيفة. هذا مثالا للوظيفة.
function add_three (number) { return number + 3 }
ويمكن تنفيذ هذه العبارة على النحو التالي :
print add_three(36) # Outputs 39
الوظائف يمكن أن يكون لديها متغيرات في مجال محلي. تضاف هذه الأسماء هذه إلى نهاية قائمة المتحولات المستقلة، على الرغم من أن القيم هذه يجب أن يتم حذفها عند استدعاء الوظيفة. ومن المتفق عليه إضافة بعض المسافات البيضاء whitespace في قائمة المتحولات المستقلة قبل المتغيرات المحلية، من أجل تحديد نهاية الوسيط وبداية المتغيرات المحلية.
قد يكون هناك مسافة واحدة أو أكثر بين اسم الوظيفة والقوس في تعريف الوظيفة، ولكن لا يسمح على الإطلاق بأي مسافة في استدعاء الوظيفة.
نموذج (عينة من) التطبيقات
Hello World
برنامج أهلا بالعالم وهنا المثال المعروف "مرحبا العالم" البرنامج مكتوب بلغة أووك AWK :
BEGIN { print "Hello, world!" }
لاحظ أن عبارة الخروج الواضحة لا حاجة لها هنا، في حين النمط الوحيد هو BEGIN، لا تتم معالجة أي متحولات مستقلة لسطر الأوامر.
طباعة سطور أطول من 80 حرف
طباعة جميع السطور الأطول من 80 حرف. لاحظ أن الإجراء الافتراضي هو طباعة السطر الحالي.
length($0) > 80
طباعة عدد الكلمات
يعد الكلمات في المدخلات، وتطبع عدد السطور، والكلمات، والحروف (مثل WC)
{ w += NF c += length + 1 } END { print NR, w, c }
حيث لا يوجد نمط للسطر الأول من البرنامج، كل سطر من المدخلات يتماشى مع الأفتراضي بحيث يتم تنفيذ إجراءات التزايد لكل سطر. لاحظ أن w +== NF هو اختصار لـ w == w + NF.
مجموع الكلمة الأخيرة
{ s += $NF } END { print s + 0 }
يتم زيادة S بقيمة رقمية لـ $NF التي هي الكلمة الأخيرة في السطر كما هو محدد بواسطة فاصل حقل AWK، بالمسافة البيضاء افتراضية. NF هو عدد الحقول في السطر الحالي، على سبيل المثال 4. حيث 4 $ هي قيمة الحقل الرابع، $NF هي قيمة الحقل الأخير في سطر بغض النظر عن عدد حقول هذا السطر، أو ما إذا كان يحتوي على حقول أكثر أو أقل من السطور المحيطة. $في الواقع هي عامل أحادي مع أعلى عامل أفضلية operator precedence. (إذا كان السطر لا يوجد به فسوف تكون NF 0, $0 هو السطر كله، وهو فارغ في هذه الحالة بصرف النظر عن المسافة البيضاء، وبالتالي فقيمته الرقمية 0.)
في نهاية الإدخال يتطابق نمط END حتى تتم طباعة S. ومع ذلك، حين لا يكون هناك أية سطور من المدخلات، في هذه الحالة، لا تتعين أي قيمة لـ S، افتراضيا سوف تكون سلسلة فارغة. إضافة صفر إلى متغير هو أحد تعبيرات أووك AWK لإرغامه للتغيير من السلسلة إلى قيمة رقمية (Concatenating دمج سلسلة فارغة لتحويلها بقوة من رقم إلى سلسلة، على سبيل المثال s "". ملاحظة، ليس هناك عامل لتعاقب السلاسل، يتم وضعها فقط متجاورة.) مع الإكراه يطبع البرنامج 0 على مدخل فارغ، وبدونه يتم طباعة السطر الفارغ.
تنسيق مجموعة من سطور الإدخال
$ yes Wikipedia | awk 'NR % 4 == 1, NR % 4 == 3 { printf "%6d %s\n", NR, $0 }' | sed 7q 1 Wikipedia 2 Wikipedia 3 Wikipedia 5 Wikipedia 6 Wikipedia 7 Wikipedia 9 Wikipedia $
الأمرyes يطبع دلالته مرارا وتكرارا (بحرف "y" فتراضياً) على سطر. في هذه الحالة، نحن نقول للأمر أن يطبع كلمة Wikipedia " " عبارة الإجراء تطبع كل سطر مرقم. وظيفة printf تحاكي printf في لغة C القياسية، وتعمل على نحو مماثل لأمر الطباعة المذكورة أعلاه. النمط للتطابق، وعلى أي حال، فإنها تعمل كما يلي : NR هو عدد السجلات، وعادة عدد سطور الإدخال، التي قرأتها أووك AWK حتى الآن، أي رقم السطر الحالي، ابتداء من 1 للسطر الأول من المدخلات. ٪ هي مشغل البقية modulo operator.. NR % 4 == 1 صحيح بالنسبة لسطور المدخلات للأول والخامس التاسع، الخ ،. وبالمثل، NR % 4 == 3 صحيح بالنسبة لسطور المدخلات الثالث السابع الحادي عشر، الخ ،. نمط النطاق خاطئ حتى تطابق الجزء الأول، في السطر 1، ويبقى بعد ذلك صحيحا، ومتضمناً حتى تطابق الجزء الثاني، على السطر 3. ومرة أخرى يبقى زائف حتى تطابق الجزء الأول مرة أخرى على السطر 5. يتم استخدام الأمر محرر نصوص sed لطباعة أول 7 سطور، لمنع تشغيل YES إلى الأبد. وهو ما يعادل head -n7 إذا كان الأمر (رأس) head متاح.
الجزء الأول من مجموعة النمط يكون حقيقي باستمرار، على سبيل المثال 1 يمكن استخدامه لبدء المجموعة في بداية الإدخال. وبالمثل، إذا كان الجزء الثاني زائف باستمرار، مثلاً 0، فإن المجموعة تستمر حتى نهاية الإدخال :
/^--cut here--$/, 0
طباعة سطور المدخلات من السطر الأول يطابق المصطلح المعتاد ^--cut here--$، وهذا هو سطر لا يحتوي إلا على عبارة "--cut here--" حتى النهاية.
حساب تكرار (تردد) الكلمة
تردد الكلمة يستخدم مصفوفات مترابطة associative arrays :
BEGIN { FS="[^a-zA-Z]+" } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }
كتلة BEGIN (تبدأ) تضع فاصل الحقل إلى أي تسلسل من الأحرف غير الأبجدية. لاحظ أن الفواصل يمكن أن تكون مصطلحات عادية. بعد ذلك، نصل إلى الإجراء المجرد، والذي يؤدي العمل على كل سطر إدخال. في هذه الحالة، لكل حقل على السطر، نضيف واحد إلى عدد المرات التي تتحول فيها الكلمة إلى أحرف صغيرة، وتبدو. أخيرا، في كتلة النهاية، فإننا نطبع الكلمات مع تردداتها. السطر
for (i in words)
يكوّن حلقة التي تذهب خلال كلمات المصفوفة، وضع i لكل حرف منخفض في المصفوفة. وهذا يختلف عن معظم اللغات، حيث تمر هذه الحلقة بكل قيمة في المصفوفة. بالتالي تطبع هذه الحلقة كل كلمة تليها عدد ترددها. وكان tolower إضافة إلى awkأووك الواحد الصحيح (انظر أدناه) التي تتم بعد نشر الكتاب.
تطابق النمط من سطر الأوامر
يمكن عرض هذا البرنامج بعدة طرق. أول واحد يستخدم غلاف بورن Bourne shell لعمل shell script نص الغلاف الذي يفعل كل شيء. وهى من أقصر الطرق التالية :
$ cat grepinawk pattern=$1 shift awk '/'$pattern'/ { print FILENAME ":" $0 }' $* $
إن نمط $ في أووك awk غير محمي بعلامات أقتباس. النمط من تلقاء نفسه بالطريقة المعتادة يقوم بعمل اختبار لمعرفة ما إذا كان السطر كله (0$) متطابق. FILENAME (اسم الملف) يحتوي على اسم الملف الحالي. أووك AWK لا يوجد لديه مشغل تعاقب محدد ؛ سلسلتين متجاورتين لتجعلهم متعاقبين. 0 $تتسع لسطر الإدخال الثابت الأصلي.
هناك طرق بديلة لكتابة هذا. سكريبت شيل shell script (نص الغلاف)هذه تصل إلى البيئة مباشرة داخل awk أووك :
$ cat grepinawk pattern=$1 shift awk '$0 ~ ENVIRON["pattern"] { print FILENAME ":" $0 }' $* $
هذا هو نص الغلاف الذي يستخدم ENVIRON، مصفوفة تعرض في الإصدار الأحدث من awk الحقيقية بعد نشر الكتاب. الرمز السفلي من ENVIRON هو اسم متغير البيئة ؛ نتيجته هو قيمة للمتغير. هذا مثل وظيفة getenv في المكتبات القياسية المختلفة و POSIX (الواجهة البينية لنظام التشغيل القابل للحمل). ونص الغلاف يجعل نمط متغير البيئة يحتوي على أول متغيير مستقل، ثم تسقط هذا النتغيير المستقل وعندها أووك AWL تبحث عن النمط في كل ملف.
~ دقق لمعرفة ما إذا كان المعامل الأيسر يتطابق مع المعامل الأيمن ؛!~ أو هل هو عكسه. لاحظ أن التعبير العادي هو مجرد سلسلة ويمكن تخزينه كمتغيرات.
الطريق الآخر الذي يستخدم سطر أمر تحديد المتغيرات، حيث المتغير المستقل لأووك AWK يمكن أن يرى كتعيين لمتغير :
$ cat grepinawk pattern=$1 shift awk '$0 ~ pattern { print FILENAME ":" $0 }' "pattern=$pattern" $* $
وأخيرا، هذا مكتوب تماماً بلغة awk أووك، بدون مساعدة من غلاف أو دون الحاجة إلى معرفة الكثير عن تنفيذ نص أووك awk (كما يفعل تعيين المتغير على سطر الأمر الأول)، ولكن طويلة قليلا :
BEGIN { pattern = ARGV[1] for (i = 1; i < ARGC; i++) # remove first argument ARGV[i] = ARGV[i + 1] ARGC—if (ARGC == 1) { # the pattern was the only thing, so force read from standard input (used by book) ARGC = 2 ARGV[1] = "-" } } $0 ~ pattern { print FILENAME ":" $0 }
BEGIN ضروري ليس فقط لاستخراج المتغيير المستقل الأول، ولكن أيضا لمنعه من أن يفسر على أنه اسم الملف بعد أنتهاء كتلة BEGIN. ، ARGC هو عدد من المتغيرات المستقلة، مضمون دائماً أن تكون ≥1، كما ARGV [0] هو اسم الأمر الذي ينفيذ النص، في معم الأحيان السلسلة "awk". لاحظ أيضا أن ARGV [ARGC] هو سلسلة فارغة، "". # يبدأ التعليق الذي يوسع إلى نهاية السطر. لاحظ كتلة if. أووك awk تتحقق فقط لمعرفة ما اذا كان ينبغي أن تقرأ من الإدخال القياسي قبل تشغيل الأمر. وهذا يعني أن
awk 'prog'
يعمل فقط بسبب حقيقة أنه لا توجد أسماء ملفات تم اختبارها قبل تشغيل prog ! إذا قمت بتحديد ARGC إلى 1 بحيث لا توجد متغيرات مستقلة، سوف يتوقف أووك awk ببساطة لأنه يشعر أنه لم يعد هناك ملفات من المدخلات. لذلك، تحتاج إلى القول صراحة إلى القراءة من الإدخال القياسي مع اسم الملف الخاص -.
نصوص أووك AWK ذاتية المحتوى
كما هو الحال في العديد من لغات البرمجة الأخرى، نص أووك ذاتي المحتوى يمكن بنائه باستخدام ما يسمى بقواعد "shebang". على سبيل المثال، أمر يونيكس يسمى hello. أووك AWK الذي يطبع السلسلة " Hello, world! !" يمكن أن يبنى عن طريق إنشاء ملف يسمى hello. أووك AWK تحتوي على السطور التالية :
#!/usr/bin/awk -f BEGIN { print "Hello, world!" }
-f تقول لأووك AWK أن المعامل التالي هو ملف لقراءة برنامج awk، الذي تم وضعه هناك بالغلاف عند تشغيل.
إصدارات وتطبيقات
AWK كتبت أصلاً في عام 1977، وتم توزيعها مع الإصدار 7 يونيكس. في 1985 بدأ مؤلفيها التوسع في الغة، وأهمها عن طريق إضافة الوظائف المحددة من قبل المستخدم. ويرد وصف للغة في كتاب لغة البرمجة AWK، الذي نشر عام 1988، وتنفيذها كان متاحاً في الإصدارات من نظام يونيكس الخامس UNIX System V لتجنب الارتباك مع الإصدار القديم الغير متوافق، وهذا الإصدار كان معروفا في بعض الأحيان بأنه "new awk" أو nawk. تم إصدار هذا التنفيذ بموجب ترخيص البرمجيات الحرة free software license في عام 1996، والتي لا تزال محفوظة من قبل بريان كيرنيغان. انظر الروابط الخارجية أدناه)
الإصدارات القديمة من يونيكس، مثل UNIX/32V، شملتawkcc، والتي تحول AWK إلى C كيرنيغان كتب برنامج لتحويل awk إلى C++ ؛ ولا تعرف حالته.[٦]
- BWK awk يشير إلى الإصدار من قبل بريان دبليو كيرنيغان Brian W. Kernighan، المعروف أيضا باسم nawk. فقد كان يطلق عليها اسم "واحد AWK صحيح" بسبب استخدام مصطلح بالاشتراك مع الكتاب الذي وصف في الأصل اللغة وحقيقة أن كيرنيغان كان واحدا من الكتاب الأصليين لأووكAWk [٧] FreeBSD يشير إلى هذه النسخة كواحد أووك صحيح one-true-awk.</ref> FreeBSD refers to this version as one-true-awk.[٨] هذا الإصدار أيضا له مميزات ليست في الكتاب، مثل tolower و ENVIRON التي أوضحت أعلاه ؛ راجع ملف FIXES في الأرشيف المصدر للحصول على تفاصيل. يتم أستخدام هذا الإصدار من قبلFreeBSDفري بي إس دي, NetBSDنت بي إس دي ،OpenBSDأوبن بي إس دي أو MacOS Xماك أو إس عشرة.
- gawk (GNU awk) هو تنفيذ آخر للبرمجيات الحرة والتنفيذ الوحيد الذي بذل محاولات جادة في تنفيذ التدويل وتوطين وعولمة (معلوماتية)و التطويع اللغوي وبروتوكول الإنترنت TCP/IP. كما يسمح للمستخدم لتوسيع وظيفة البرنامج عن طريق كتابة المستخدم عبر المكتبات المشتركة. وقد كتب قبل أن يصبح التنفيذ الأصلي متاحاً، وما زال يستخدم على نطاق واسع. العديد من توزيعة جنو/لينكس Linux distributions تأتي مع النسخة الأخيرة من gawk ومعترف بها على نطاق واسع بأنها التنفيذ الفعلي القياسي في عالم لينكس Linux. تم تضمين الإصدار gawk version 3.0 كما شملت awk فيFreeBSD قبل الإصدار 5.0. الإصدارات لاحقة من FreeBSD استخدمت BWK awk من أجل تجنب GPL، [٩]، على ترخيص أكثر تقييدا more restrictive من رخص بي إس دي BSD license [١٠].
- mawk هو تطبيق سريع للغاية من AWK صممه مايك برينان مستند إلى مترجم رمز بايت. byte code
- libmawk هو تفرع من ماوك mawk، يسمح للتطبيقات لتضمين مثيلات متعددة متوازية من المترجم awk.
- AWKA (الذي يكتب الطرف الأمامي أعلى برنامج ماوك) وهو مترجم آخر لنصوص AWK إلى رمز C. عندما كتبت بشكل ثابت، تضمنت libawka.aالخاصة بالمؤلف، وأسرعت بشكل كبير في الناتج التنفيذي، وفقا لاختبارات المؤلف، قارن بشكل جيد جدا مع الإصدارات أخرى من أووك، بيرل، أو تى سى ال AWK, Perl, أو Tcl. سوف النصوص الصغيرة تتحول إلى برامج من 160-170 كيلو بايت.
- tawk (طومسون AWK) هو مترجم AWKمصرف (برمجة) لـ (نظام التشغيل) سولاريس Solaris (operating system)، دوس DOS،أو إس/2 OS/2دوس، ويندوز Windowsمايكروسوفت ويندوز، وبيعت قديماً من قبل برمجيات طومسون أوتوميشن (التي أوقفت نشاطها).
- Jawk هو مشروع SourceForge لتنفيذ AWK في چاڤا.[١١] ملحقات اللغة مضافة لتوفير الوصول إلى ميزات جافاجافا (لغة برمجة) ضمن نصوص AWK (أي نسق، خصائص، مجموعات جافا، الخ).
- xgawk هو مشروع SourceForge مستند على [١٢] [gawk] ويمتد عن gawk بالمكتبات المتحركة ديناميكيا.
- QSEAWK هو جزءمتضمن في تنفيذ مترجم AWK المدرج في مكتبة QSE، الذي يوفر تضمين API للغة C سي++ (لغة برمجة) وC++.[١٣]
- BusyBox يتضمن تنفيذ موثق متناثر ل AWK الذي يبدو كاملا، كتب بواسطة ديميتري زاخاروف Dmitry Zakharov. وهو تطبيق صغير جدا مناسبة للأنظمة المدمجة.
كتب مرجعية
- Aho, Alfred V.; Kernighan, Brian W.; Weinberger, Peter J. (1988-01-01). The AWK Programming Language. New York, NY: Addison-Wesley. ISBN 0-201-07981-X. http://cm.bell-labs.com/cm/cs/awkbook/. Retrieved 2009-04-16. The book's webpage includes downloads of the current implementation of Awk and links to others.
- Robbins, Arnold (2001-05-15). Effective awk Programming (3rd ed.). Sebastopol, CA: O'Reilly Media. ISBN 0-596-00070-7. http://www.oreilly.com/catalog/awkprog3/. Retrieved 2009-04-16.
- Dougherty, Dale; Robbins, Arnold (1997-03-01). sed & awk (2nd ed.). Sebastopol, CA: O'Reilly Media. ISBN 1-56592-225-5. http://www.oreilly.com/catalog/sed2/. Retrieved 2009-04-16.
- Robbins, Arnold (2000). Effective Awk Programming: A User's Guide for Gnu Awk (1.0.3 ed.). Bloomington, IN: iUniverse. ISBN 0-595-10034-1. http://www.gnu.org/software/gawk/manual/. Retrieved 2009-04-16. Arnold Robbins maintained the GNU Awk implementation of AWK for more than 10 years. The free GNU Awk manual was also published by O'Reilly in May 2001. Free download of this manual is possible through the following book references.
لمزيد من القراءة
- Hamilton, Naomi (2008-05-27). "The A-Z of Programming Languages: AWK". Computerworld. http://www.computerworld.com.au/article/216844. Retrieved 2009-04-16. – Interview with Alfred V. Aho on AWK
- Robbins, Daniel (2000-12-01). "Awk by example, Part 1: An intro to the great language with the strange name". Common threads. IBM DeveloperWorks. http://www.ibm.com/developerworks/linux/library/l-awk1.html. Retrieved 2009-04-16.
- Robbins, Daniel (2001-01-01). "Awk by example, Part 2: Records, loops, and arrays". Common threads. IBM DeveloperWorks. http://www.ibm.com/developerworks/linux/library/l-awk2.html. Retrieved 2009-04-16.
- Robbins, Daniel (2001-04-01). "Awk by example, Part 3: String functions and... checkbooks?". Common threads. IBM DeveloperWorks. http://www.ibm.com/developerworks/linux/library/l-awk3.html. Retrieved 2009-04-16.
- AWK – Become an expert in 60 minutes
- awk tutorial
- awk: pattern scanning and processing language – Commands & Utilities Reference, The Single UNIX® Specification, Issue 7 from The Open Group
- gawk(1) – Linux User Commands Manual
- Gawkinet: TCP/IP Internetworking with Gawk
References
- ^ The Single UNIX Specification, Version 3, Utilities Interface Table
- ^ Linux Standard Base Core Specification 4.0, Chapter 15. Commands and Utilities
- ^ The A-Z of Programming Languages: AWK
- ^ Raymond، Eric S.. Applying Minilanguages. The Art of Unix Programming. Retrieved May 11, 2010.
- ^ http://www.computerworld.com.au/index.php/id;1726534212;pp;2 The A-Z of Programming Languages: AWK
- ^ An AWK to C++ Translator
- ^ The AWK Programming Language, ISBN 0-201-07981-X.
- ^ FreeBSD's work log for importing BWK awk into FreeBSD's core, dated 2005-05-16, downloaded 2006-09-20
- ^ FreeBSD's view of GPL Advantages and Disadvantages
- ^ FreeBSD 5.0 release notes with notice of BWK awk in the base distribution
- ^ Jawk at SourceForge
- ^ xgawk Home Page
- ^ QSEAWK at Google Code
Further reading
- Hamilton، Naomi (2008-05-27). The A-Z of Programming Languages: AWK. Computerworld. Retrieved 2009-04-16. – Interview with Alfred V. Aho on AWK
- Robbins، Daniel (2000-12-01). Awk by example, Part 1: An intro to the great language with the strange name. Common threads. IBM DeveloperWorks. Retrieved 2009-04-16.
- Robbins، Daniel (2001-01-01). Awk by example, Part 2: Records, loops, and arrays. Common threads. IBM DeveloperWorks. Retrieved 2009-04-16.
- Robbins، Daniel (2001-04-01). Awk by example, Part 3: String functions and... checkbooks?. Common threads. IBM DeveloperWorks. Retrieved 2009-04-16.
- AWK – Become an expert in 60 minutes
- awk tutorial
- قالب:Man
- قالب:Man
- Gawkinet: TCP/IP Internetworking with Gawk
وصلات خارجية
مشاريع شقيقة | اقرأ نصا ذا علاقة بأوك، في ويكي الكتب. |
bs:Awk ca:Awk cs:AWK de:Awk el:AWK AWK]] es:AWK et:AWK fa:AWK fi:AWK fr:Awk gl:AWK hr:Awk hu:Awk it:Awk ja:AWK ko:AWK lv:AWK ms:AWK nl:AWK no:Awk pl:AWK pt:AWK ro:AWK ru:AWK sh:AWK sk:AWK (programovací jazyk) sv:Awk tg:Awk th:ภาษาออว์ค tr:AWK uk:AWK vi:AWK zh:AWK