AWK: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
خط ۱:
{{بدون منبع|تاریخ=اوت ۲۰۰۹}}Awk یک زبان برنامه نویسی همه کاره است که برای پردازش داده‌های مبتنی بر متن (text-based) یا فایلها یا جریان داده‌ها در آزمایشگاه bell در سال 1970 طراحی و ساخته شد.نام awk از [[نام خانوادگی]] سازندگانش مشتق شده است ( Alfred Aho, Peter Weinberger, Brian Kernighan)
{{دیگر کاربردها|AWK}}
به هر حال معمولاًً به عنوان رشته حرف‌های جدا تلفظ نشده استولی تا حدی که مشابه به صدای نام یک پرنده aak صدا بدهد (که به صورت یک آرم برای زبان عمل می‌کند مثل آرم روی کتاب زبان برنامه نویسی awk )awk وقتی که به طور کلی با حروف کوچک نوشته می‌شودبا رجوع به برنامه UNIX وPlan 9 که سایر برنامه‌های نوشته شده در awk را اجرا می‌کنند.
Awk یک مثال از یک زبان برنامه نویسی است که بطور وسیعی از [[نوع داده]] رشته استفاده می‌کند، آرایه‌های شرکت پذیر (آرایه‌هایی هستند که اندیس دهی با رشته‌های اصلی شده‌اند)و عبارت‌های منظم.قدرت، اختصار، ومحدودیت‌های زبان awk وsed scripts الهام بخش Larry Wall در نوشتن Perl بود. بخاطر حاشیه نویسی انبوه آنها، همه این زبانها اغلب برای نوشتن برنامه‌های حاشیه‌ای استفاده می‌شدند.
Awk یکی از ابتدایی‌ترین ابزارهایی است که در Unix ورژن 7 ظاهر شدو به عنوان راهی برای اضافه کردن ویژگیهای محاسباتی به خط لوله Unix محبوبیت زیادی به دست آورد. یک ورژن از زبان awk یک ویژگی استاندارد تقریباً هر سیستم‌عامل جدید شبیه یونیکس که امروزه موجود است می‌باشد. awk ذکر کننده در مشخصه مجرد یونیکس به عنوان ابزار اجباری سیستم‌عامل یونیکس می‌باشد. علاوه بر این برنامه واسط Bourne shell ،awk تنها زبان دیگر اسکریپتی موجود در محیط استاندارد یونیکس می‌باشد پیاده سازی awk تقریباً به عنوان یک نرم‌افزار نصب شده برای تمامی سیستم‌عامل‌های دیگر وجود دارد.
== ساختار برنامه‌های Awk ==
خط ۱۱:
 
که الگوها نمونه یک عبارت هستند و فعالیتها یک سری از دستورها هستند. هر خط ورودی با تمام الگوهای در گردش آزمایش می‌شود و فعالیت برای هر عبارتی که درست باشد اجرا می‌شود. ممکن است هم الگو و هم فعالیت حذف شده باشند. پیش فرض الگو به تطبیق دادن هر خط از ورودی است و پیش فرض فعالیت چاپ خط ورودی می‌باشد.
به علاوه یک عبارت ساده awk الگو شروع یا پایان می‌تواند باعث شود که فعالیت قبل یا بعد از همه خطهای ورودی که خوانده شده است اجرا شود. یا الگو1 یا الگو 2 که تطبیق می‌دهند محدوده خطوط ورودی شروع می‌شوند با خطی که منطبق بر الگو 1 و شامل خطی که منطبق بر الگو 2 می‌باشد قبل از اینکه دوباره تلاش کند با [[تطبیق الگو]] 1 روی خطوط آینده.
به علاوه حسابگر منطقی و [[عملگر منطقی]] عبارات Awk شامل عملوند ~ می‌باشند.که منطبق می‌کند عبارات منظم با رشته به طوریکه نحوی قندی /regexp/ بدون استفاده از عملگر~ با خط جاری ورودی منطبق می‌کند.
== دستورات Awk ==
دستورات awk عبارتهایی هستن که جایگزین می‌شوند به عنوان فعالیت در مثالهای بالا .دستورهای awk می‌توانند شامل فراخوانی تابع، انتساب به متغیرها، محاسبات یا هر ترکیبی آز آنها که بشود.awk دارای پشتیبانی داخلی برای خیلی از توابع است awk امکانات بیشتری را توسط چاشنی‌های گوناگون فراهم نموده است. همچنین بعضی از کتابخانه‌ها پشتیبانی می‌کنند شمول کتابخانه‌های متصل شده پویا را که همچنین می‌توانند توابع بیشتری را فراهم کنند. برای اختصار در میان گذاشتن {} از این مثالها حذف خواهد شد.
خط ۱۵۵:
</source>
 
الگو $ در دستور awk توسط گیومه محافظت نمی‌شود.یک الگو به خودی خود در راه عادی چک می‌کند تا ببند با تمام خطهای ($0) منطبق است .نام فایل شامل [[نام فایل]] جاری است.awk عملگر جداگانه‌ای برای الحاق ندارد.دو رشته مجار با هم متصل می‌شوند. $0 بدون تغییر ورودی به خطوط اصلی تغییر پیدا می‌کند .آنها راه‌های متناوب برای نوشتن این هستند .این shell script دسترسی دارد به محیط به صورت مستقیم از داخل awk.
 
<source lang="bash">
خط ۱۷۴:
</source>
 
در انتها نوشته می‌شود در awk اصل بدون کمک گرفتن از shell یا بدون دانستن زیاد در مورد اجرای awk script .(به عنوان انتساب در [[خط فرمان]] انجام می‌شود .)ولی به اندازه یک بیت درازا دارد.
 
<source lang="bash">
خط ۱۹۷:
کارها فقط به خاطر این حقیقت که هیچ نام فایلی وجود نداردقبل از اجرای برنامه چک می‌شود.اگر شما به طور واضح تنظیم کنیدARGC به 1 بنابراین هیچ آرگومانی وجود ندارد.awkبه طور ساده و مختصر خواهد شد به خاطر اینکه فکر می‌کند هیچ نام فایلی ورودی دیگری وجود ندارد.بنابراین شما نیاز دارید که به طور واضح بگویید با یک نام فایل ویژه از یک ورودی استاندارد می خوانید
== Self-contained AWK scripts ==
به عنوان مثال با خیلی از زبانهای برنامه نویسی دیگر [[خود شمولی]] AWK script می‌تواند با سازنده برای استفاده کردن از so-called " shebang" syntax به عنوان مثال دستور UNIX فراخوانی می‌کند hello.awk که چاپ می‌کند رشته "Hello, world!" که جزوی از ساختمانی است که وسیله اسم فایل ساخته می‌شود hello.awkکه شامل خط زیر می‌باشد.
<source lang="bash">
#!/usr/bin/awk -f
خط ۲۰۷:
== ورژن‌ها و پیاده سازی AWK ==
AWK به طور کلی در سال 1977 نوشته شد و با ورژن 7 Unix توزیع شد.
در سال 1985 نویسنده‌های آن به وسیله اضافه کردن توابع user-defined شروع به گسترش زبان کردند.در کتاب AWK Programming Language زبان توضیح داده شد و در سال 1988 منتشر و پیاده سازی شد وبا UNIX System V عرضه شد.برای پرهیز از اشتباه شدن با ورژن‌های قدیمی ناسازگار بعضی وقتها این ورژن به عنوان "new awk" یا nawk شناخته می‌شد.این پیاده سازی [[تحت لیسانس]] free software license در 1996 عرضه شد وهمچنان توسط Brian Kernighan نگهداری می‌شود .
BWK awk رجوع می‌کند به ورژن Brian W. Kernighan .که دوبله می‌کند "One True AWK" بخاطر استفاده کردن از اصطلاح در وابسته سازی با کتاب که به طور کلی زبان را توصیف می‌کند. و حقیقت این است که Kernighan یکی از نویسندگان اصلی awk است . FreeBSD به این ورژن مراجعه می‌کند به عنوان مثال one-true-awk.این ورژن اغلب ویژگی هایش در این کتاب نبود.از قبیل tolower وENVIRON که در بالا توضیح داده شده است.
gawk (GNU awk) یک [[نرم‌افزار آزاد]] دیگر است که پیاده سازی شد و تنها پیاده سازی است که تلاش جدی در انجام داده i18n دارد.و اغلب به کاربر اجازه می‌دهد که تابعیت برنامه خود را با کتابخانه‌های اشتراکی نوشته شده توسط کاربر توسعه دهد.که قبل از پیاده سازی اصلی نوشته شد که به صورت آزاد موجود بود.و هنوز به طور گسترده استفاده می‌شود.خیلی از نسخه‌های Linux با این ورژن اخیرgawk آمدند وgawk به طور وسیعی به عنوان de-facto پیاده سازی استاندارد در دنیای Linux شناخته شد. gawk ورژن 3 شامل awk در FreeBSD تا پیش از ورژن 5 بود.ورژن‌های بعدی FreeBSD از BWK awk برای جلوگیری از GPL استفاده کردند.محدود کردن بیشتر (در این جهت که GPL لیسانس کد نمی‌تواند باعث اختصاصی شدن یک نرم‌افزار شود.)لیسانس از BSD لیسانس.
xgawk یک پروژه SourceForge که برا ساس gawk است.که gawk را با کتابخانه‌های قابل بارگذاری پویا گسترش داده است.
mawk یک پیاده سازی AWK مرجع است که به وسیله Mike Brennan و براساس مفسر بایت کد می‌باشد .
خط ۲۲۷:
[[رده:نرم‌افزارهای ۱۹۷۷ (میلادی)]]
[[رده:نرم‌افزارهای چندسکویی]]
[[رده:ویکی‌سازی رباتیک]]
برگرفته از «https://fa.wikipedia.org/wiki/AWK»