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

محتوای حذف‌شده محتوای افزوده‌شده
Xqbot (بحث | مشارکت‌ها)
جز r2.7.3) (ربات: افزودن da:AWK (programmeringssprog)
YasBot (بحث | مشارکت‌ها)
خط ۴:
به هر حال معمولاًً به عنوان رشته حرف‌های جدا تلفظ نشده استولی تا حدی که مشابه به صدای نام یک پرنده 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 به صورت یک سری از الگوها و فعالیتهای جفتی می‌باشد که به صورت زیر نوشته می‌شود.
خط ۲۵:
print $1
</source>
 
 
اولین زمینه از خط جاری را نشان می‌دهد:
سطر ۳۳ ⟵ ۳۲:
 
اولین و سومین زمینه از سطر جاری را نشان می‌دهد و مجزا شده‌اند به وسیله رشته از قبل تعریف شده فراخوانده خروجی زمینه جداسازی (OFS) که پیش فرض مقدار یک کاراکتر فاصله خالی است.
اگرچه ممکن است این زمینه‌ها ($X) جهتی را شبیه به متغیرها تعریف کنند (علامت $ نشان دهنده متغیرها در perl می‌باشد) آنها واقعاواقعاً به زمینه‌های سطر جاری مراجعه می‌کنند. مورد ویژه $0 مراجعه می‌کند به خط کامل در حقیقت دستور "print و "print $0" با یکدیگر در طراحی مساوی هستند. دستور چاپ می‌تواند همچنین محاسبات و فراخوانی تابع را نشان دهد.
<source lang="bash">
print 3+2
سطر ۴۰ ⟵ ۳۹:
print sin(3-2)
</source>
 
 
خروجی ممکن است که به فایل فرستاده شود:
<source lang="bash">
print "expression" > "file name"
</source>
 
 
یا در یک لوله :
سطر ۶۳ ⟵ ۶۰:
}
</source>
 
 
این عبارت می‌تواند به صورت زیر احضار شود :
سطر ۷۷ ⟵ ۷۳:
BEGIN { print "Hello, world!" }
</source>
 
 
توجه داشته باشید که شما به یک عبارت صریح exit نیاز ندارید. تنها الگو BEGIN می‌باشد در هیچ خط دستور آرگومانها پردازش نمی‌شوند.
سطر ۸۳ ⟵ ۷۸:
تمام خطوط طویل تر از 80 کاراکتر را چاپ کن توجه داشته باشید که فعالیت پیش فرض چاپ خط جاری است.
<source lang="bash">
length($0) > 80
</source>
 
سطر ۱۰۴ ⟵ ۹۹:
</source>
 
S توسط ارزش عددی $NF توسعه داده شده که حرف آخر روی خط به عنوان زمینه جداکننده به وسیله awk تعریف شده به وسیله فضای خالی پیش فرض می‌باشد.NF شماره زمینه‌ها در خط جاری می‌باشد . e.g. 4 از $4 ارزش زمینه 4 است . $NF ارزش آخرین زمینه در این خط صرف نظر از این که این خط دارای چه تعداد زمینه می‌باشد .یا اگر نسبت به خطوط اطراف بیشتر یا کمتر زمینه دارد . $ در حقیقت یک عملگر یگانی است که دارای بالاترین اولویت عملگرها می‌باشد.(اگر خط هیچ زمینه‌ای نداشته باشد سپس NF 0, $0 تمام خط می‌باشد که در این مورد ممکن است بطور مجزا خالی از فضای سفید است.و بناباین ارزش عددی 0 را داردبرای اختصار {} در این مثالها حذف شده اندشده‌اند.
در انتهای ورودی الگوی منطبق با END است بنابراین s چاپ می‌شود.به هر حال تا زمانیکه هیچ خط ورودی وجود نداشته باشد.در این حالت هیچ مقداری به s انتساب داده نمی‌شود این به طور پیش فرض یک رشته خالی است.اضافه کردن 0 به متغیرها یک اصطلاح Awk برای ناگزیر کردن از یک عدد به یک رشته ( تسلسل رشته خالی ناگزیر می‌کند از عدد به یک رشته eg )تو.جه داشته باشید .هیچ عملگری به الحاق رشته‌ها وجود ندارد.آنها فقط نزدیک جایگذاری می‌شوند .با ناگزیر بودن برنامه صفر را در ورودی خالی چاپ می‌کند .بدون آن یک خط خالی چاپ شده است.
== انطباق محدوده ورودی در خطها ==
سطر ۱۱۹ ⟵ ۱۱۴:
</source>
 
دستور yes دائمادائماً این آرگومانها را روی خط چاپ می‌کند(با پیش فرض حرف 'y')در این مورد ما به دستور می گوییم که کلمه "Wikipedia" را چاپ کن .عبارت فعالیت هر خط شماره دار را چاپ می‌کند.تابعprintf از تابع استاندارد printf در C تقلید می‌کند.و مشابه دستور print که در بالا توضیح داده شد کار می‌کند.الگو برای انطباق به هر حال به شرح ذیل کار می‌کند. NR شماره رکوردها است. علامت خطوط ورودی که awk تا به حال خوانده است.شماره خط جاری شروع می‌شود از 1 برای خط اول ورودی.%عملگر باقی ماندهباقی‌مانده است . NR % 4 == 1 در ابتدا درست است.5 ،9و غره خطوط ورودی هستند . همانطور که NR % 4 == 3 درست است برای خط 3،7،11و غیره خطوط ورودی .محدوده الگو اول نادرست است تا وقتی که قسمت اول منطبق شود .در خط اول وسپس به بالا رفتن ادامه می‌دهد تا وقتی که با قسمت دوم منطبق باشد .در خط سوم سپس نادرست می‌شود تا وقتی که قسمت اول با خط پنجم منطبق باشد .دستور Sed استفاده می‌شود برای چاپ 7 خط اول.برای جلوگیری از دستور yes برای همیشه این همعنای head -7 اگر دستور اصلی موجود باشد.
قسمت اول محدوده الگو بصورت دائمی درست می‌باشد e.g. 1. به عنوان محدوده شروع ورودی می‌تواند استفاده شود.به طور مشابه اگر قسمت دوم بطور دائمی نادرست باشد e.g. 0 محدوده ادامه پیدا می‌کند تا وقنتی که ورودی پایان یابد.
<source lang="bash">
سطر ۱۴۸ ⟵ ۱۴۳:
</source>
 
ایجاد حلقه برای حرکت در میان کلمات آرایه .تنظیم کردن i برای هر زیر نویس از آرایه‌ای نسبت به بسیاری از زبانازبانی متفاوت است که حلقه در میان کلمات آرایه حرکت کند.این به این معنا است که چاپ کردن کلمه با هر شمارنده‌ای به ساده‌ترین راه ممکن است. Tolower یک جمع در یک حقیقت Awk ساخته شده قبل از منتشر شدن کتاب است .
== انطباق الگو از خط دستور ==
این برنامه به چندین راه می‌تواند معرفی شود.اولین راه استفاده از Bourne shell برای ایجاد shell script که هر چیزی را انجام می‌دهد.این کوتاه شده این متد است.
سطر ۱۸۴ ⟵ ۱۷۹:
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)
سطر ۲۱۹ ⟵ ۲۱۴:
ورژن قدیمی 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 .این یک پیاده سازی کوتاه و مناسب برای سیستم‌های جاسازی شده می‌باشد.
سطر ۲۲۹ ⟵ ۲۲۴:
[[رده:زبان‌های برنامه‌نویسی اسکریپتی]]
[[رده:کامپایلرها و مفسرهای آزاد]]
[[رده:نرم‌افزارهای ۱۹۷۷ (میلادی)]]
[[رده:نرم‌افزارهای چندسکویی]]
 
برگرفته از «https://fa.wikipedia.org/wiki/AWK»