AWK: تفاوت میان نسخهها
محتوای حذفشده محتوای افزودهشده
جز r2.7.3) (ربات: افزودن da:AWK (programmeringssprog) |
جز ربات ردهٔ همسنگ (۲۳) +املا+مرتب (۴٫۳): + رده:نرمافزارهای ۱۹۷۷ (میلادی) |
||
خط ۴:
به هر حال معمولاًً به عنوان رشته حرفهای جدا تلفظ نشده استولی تا حدی که مشابه به صدای نام یک پرنده aak صدا بدهد (که به صورت یک آرم برای زبان عمل میکند مثل آرم روی کتاب زبان برنامه نویسی awk )awk وقتی که به طور کلی با حروف کوچک نوشته میشودبا رجوع به برنامه UNIX وPlan 9 که سایر برنامههای نوشته شده در awk را اجرا میکنند.
Awk یک مثال از یک زبان برنامه نویسی است که بطور وسیعی از نوع داده رشته استفاده میکند، آرایههای شرکت پذیر (آرایههایی هستند که اندیس دهی با رشتههای اصلی شدهاند)و عبارتهای منظم.قدرت، اختصار، ومحدودیتهای زبان awk وsed scripts الهام بخش Larry Wall در نوشتن Perl بود. بخاطر حاشیه نویسی انبوه آنها، همه این زبانها اغلب برای نوشتن برنامههای حاشیهای استفاده میشدند.
Awk یکی از ابتداییترین ابزارهایی است که در Unix ورژن 7 ظاهر شدو به عنوان راهی برای اضافه کردن ویژگیهای محاسباتی به خط لوله Unix محبوبیت زیادی به دست آورد. یک ورژن از زبان awk یک ویژگی استاندارد
== ساختار برنامههای Awk ==
Awk به صورت یک سری از الگوها و فعالیتهای جفتی میباشد که به صورت زیر نوشته میشود.
خط ۲۵:
print $1
</source>
اولین زمینه از خط جاری را نشان میدهد:
سطر ۳۳ ⟵ ۳۲:
اولین و سومین زمینه از سطر جاری را نشان میدهد و مجزا شدهاند به وسیله رشته از قبل تعریف شده فراخوانده خروجی زمینه جداسازی (OFS) که پیش فرض مقدار یک کاراکتر فاصله خالی است.
اگرچه ممکن است این زمینهها ($X) جهتی را شبیه به متغیرها تعریف کنند (علامت $ نشان دهنده متغیرها در perl میباشد) آنها
<source lang="bash">
print 3+2
سطر ۴۰ ⟵ ۳۹:
print sin(3-2)
</source>
خروجی ممکن است که به فایل فرستاده شود:
<source lang="bash">
print "expression"
</source>
یا در یک لوله :
سطر ۶۳ ⟵ ۶۰:
}
</source>
این عبارت میتواند به صورت زیر احضار شود :
سطر ۷۷ ⟵ ۷۳:
BEGIN { print "Hello, world!" }
</source>
توجه داشته باشید که شما به یک عبارت صریح exit نیاز ندارید. تنها الگو BEGIN میباشد در هیچ خط دستور آرگومانها پردازش نمیشوند.
سطر ۸۳ ⟵ ۷۸:
تمام خطوط طویل تر از 80 کاراکتر را چاپ کن توجه داشته باشید که فعالیت پیش فرض چاپ خط جاری است.
<source lang="bash">
length($0)
</source>
سطر ۱۰۴ ⟵ ۹۹:
</source>
S توسط ارزش عددی $NF توسعه داده شده که حرف آخر روی خط به عنوان زمینه جداکننده به وسیله awk تعریف شده به وسیله فضای خالی پیش فرض میباشد.NF شماره زمینهها در خط جاری میباشد . e.g. 4 از $4 ارزش زمینه 4 است . $NF ارزش آخرین زمینه در این خط صرف نظر از این که این خط دارای چه تعداد زمینه میباشد .یا اگر نسبت به خطوط اطراف بیشتر یا کمتر زمینه دارد . $ در حقیقت یک عملگر یگانی است که دارای بالاترین اولویت عملگرها میباشد.(اگر خط هیچ زمینهای نداشته باشد سپس NF 0, $0 تمام خط میباشد که در این مورد ممکن است بطور مجزا خالی از فضای سفید است.و بناباین ارزش عددی 0 را داردبرای اختصار {} در این مثالها حذف
در انتهای ورودی الگوی منطبق با END است بنابراین s چاپ میشود.به هر حال تا زمانیکه هیچ خط ورودی وجود نداشته باشد.در این حالت هیچ مقداری به s انتساب داده نمیشود این به طور پیش فرض یک رشته خالی است.اضافه کردن 0 به متغیرها یک اصطلاح Awk برای ناگزیر کردن از یک عدد به یک رشته ( تسلسل رشته خالی ناگزیر میکند از عدد به یک رشته eg )تو.جه داشته باشید .هیچ عملگری به الحاق رشتهها وجود ندارد.آنها فقط نزدیک جایگذاری میشوند .با ناگزیر بودن برنامه صفر را در ورودی خالی چاپ میکند .بدون آن یک خط خالی چاپ شده است.
== انطباق محدوده ورودی در خطها ==
سطر ۱۱۹ ⟵ ۱۱۴:
</source>
دستور yes
قسمت اول محدوده الگو بصورت دائمی درست میباشد e.g. 1. به عنوان محدوده شروع ورودی میتواند استفاده شود.به طور مشابه اگر قسمت دوم بطور دائمی نادرست باشد e.g. 0 محدوده ادامه پیدا میکند تا وقنتی که ورودی پایان یابد.
<source lang="bash">
سطر ۱۴۸ ⟵ ۱۴۳:
</source>
ایجاد حلقه برای حرکت در میان کلمات آرایه .تنظیم کردن i برای هر زیر نویس از آرایهای نسبت به بسیاری از
== انطباق الگو از خط دستور ==
این برنامه به چندین راه میتواند معرفی شود.اولین راه استفاده از Bourne shell برای ایجاد shell script که هر چیزی را انجام میدهد.این کوتاه شده این متد است.
سطر ۱۸۴ ⟵ ۱۷۹:
BEGIN {
pattern = ARGV[1]
for (i = 1; i <
ARGV[i] = ARGV[i + 1]
ARGC—if (ARGC == 1) { # the pattern was the only thing, so force read from standard input (used by book)
سطر ۲۱۹ ⟵ ۲۱۴:
ورژن قدیمی Unix از قبیل UNIX/32V شامل awkcc که تبدیل کننده AWK به C بود. Kernighan برنامهای برای تبدیل awk به C++ نوشت ولی این حالت شناخته شده نیست.
awka (کسی که با انتها در نوشتن در بالای برنامه mawk مواجه شد .)که یک مترجم دیگر از awk به C میباشد .وقتی که کامپایل میشود شامل نویسنده libawka.a میباشد نتیجه اجرایی به طور اهم براساس تست مقایسه نویسنده با سایر ورژنهای awk, perl یا tcl میباشد. scripts کوچک میتوانند به برنامههای 160-170 kB تبدیل شوند.
Thompson AWK یا TAWK یک کامپایلر AWKبرای Solaris , DOS, OS/2، و Windows که توسط Thompson Automation Software
Jawk یک SourceForge پروژه است که AWK را در Java پیاده سازی میکند. ویژگیهایی به زبان اضافه شد تا دسترسی به ویژگیهای Java در داخل AWK را فراهم کند.
BusyBox شامل پروندههای پراکنده که ظاهر میشود تا کامل کند، نوشته شده به وسیله Dmitry Zakharov .این یک پیاده سازی کوتاه و مناسب برای سیستمهای جاسازی شده میباشد.
سطر ۲۲۹ ⟵ ۲۲۴:
[[رده:زبانهای برنامهنویسی اسکریپتی]]
[[رده:کامپایلرها و مفسرهای آزاد]]
[[رده:نرمافزارهای ۱۹۷۷ (میلادی)]]
[[رده:نرمافزارهای چندسکویی]]
|