موضوع مقاله: AWK | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # AWK | مقدمه: AWK یک زبان برنامه‌نویسی مفسری است که برای پردازش متن طراحی شده و عموماً به عنوان ابزاری برای گزارش‌گیری و استخراج داده‌ها مورد استفاده قرار می‌گیرد. | ## بخش 1: AWK | این زبان برنامه‌نویسی، تبدیل به یکی از ویژگی‌های استاندارد در سیستم‌عامل‌های خانواده یونیکس شده‌است. سرواژه AWK در زبان انگلیسی، عمدتاً مشابه نام پرنده auk تلفظ می‌شود، که تصویری از این پرنده بر روی جلد کتاب زبان برنامه‌نویسی AWK استفاده شده‌است، هرچند که AWK به صورت مجزا و حرف‌به‌حرف هم تلفظ می‌شود. زبان برنامه‌نویسی AWK یک زبان اسکریپتی داده‌محور است؛ این زبان عموماً از یکسری دوجفتی الگو (pattern) و عمل (action) تشکیل می‌شود که قرار است بر روی یکسری داده‌های متنی اجرا شود؛ که این داده‌های متنی یا از فایل‌های عادی خوانده می‌شوند، یا اینکه از طریق خط لوله بدست می‌آیند. به کمک AWK می‌توان اطلاعاتی را از این داده‌های متنی استخراج کرد یا اینکه گزارش‌هایی قالب‌بندی‌شده از آن‌ها تهیه کرد. این زبان به‌طور گسترده‌ای از نوع‌داده string (رشته)، آرایه‌های انجمنی (آرایه‌ای که با کلیدرشته اندیس‌گزاری می‌شود) و عبارات باقاعده استفاده می‌کند. کدهای منبع nawk که توسط برایان کرنیگان نوشته شده بود، در ابتدا در سال ۱۹۹۳ به صورت غیرعمومی و سپس در اواخر دهه ۱۹۹۰ به صورت عمومی منتشر شد. | ## بخش 2: AWK | بسیاری از سیستم‌های BSD برای پرهیز از مجوز GPL از این پیاده‌سازی استفاده می‌کنند. هر دو آن‌ها پارادیم داده‌محور و خط‌گرا دارند و عموماً برای نوشتن برنامه‌های یک‌خطی مناسب هستند. قدرت و ایجازی که برنامه‌های AWK داشتند، خصوصاً قدرت آن در اداره‌کردن عبارات باقاعده و عدم نیاز به تعریف صریح متغیرها -- که نوشتن برنامه‌های یک‌خطی را تسهیل می‌کرد-- در کنار محدودیت‌هایی که AWK در آن زمان‌ها داشت، از جمله مهم‌ترین دلایلی بودند که الهام‌دهندهٔ لری وال برای ساخت زبان برنامه‌نویسی پرل (۱۹۸۷) شدند. در دهه ۱۹۹۰، پرل بسیار محبوب شد، و در زمره زبان‌های پردازش متن، از جمله رقیبان AWK بود. به یک فایل، همانند دنباله‌ای از رکوردها نگریسته می‌شود که به صورت پیشفرض هر خط یک رکورد را تشکیل می‌دهد. هر خط به دنباله‌ای از فیلدها شکسته می‌شود، پس بنابراین ما می‌توانیم با استفاده از اولین فیلد، به اولین کلمه از یک خط دسترسی داشته باشیم، دومین فیلد حاوی دومین کلمه از آن خط خواهد بود و به همین ترتیب. | ## بخش 3: AWK | سپس AWK به ترتیب تمامی الگوهای موجود در برنامه را بر روی آن خط امتحان می‌کند تا ببیند که آیا آن الگوها در آن خط وجود دارند یا نه. هر وقت که الگویی پیدا شد که با آن خط تطابق داشت، عمل مربوط به آن الگو اجرا خواهد شد.» یک برنامهٔ AWK از یکسری دوجفتی الگو-عمل تشکیل می‌شود که به این صورت نوشته می‌شوند. به‌طور پیشفرض، رکوردها با استفاده از کاراکتر newline از هم مجزا می‌شوند، بنابراین، فایل ورودی بر اساس خطوط موجود در آن تقسیم‌بندی می‌شود. برنامه به نوبت هر عبارتی که در بخش condition نوشته شده را بر روی رکورد فعلی آزمایش می‌کند، در صورتی که هر کدام از آن عبارات با رکورد فعلی تطابق داشت، بخش action مربوط به آن عبارت اجرا می‌شود. در صورتی که از نوشتن بخش action صرف نظر شود، به صورت پیشفرض این‌طور تصور می‌شود که قصد برنامه‌نویس چاپ کردن رکورد فعلی بوده‌است. عبارات AWK علاوه بر اینکه می‌توانند حاوی عملگرهای منطقی و محاسباتی عادی باشند، می‌توانند حاوی عملگر تیلد tilde هم باشند (~) که این عملگر، یک عبارت باقاعده را بر روی یک رشته آزمایش می‌کند. | ## جمع‌بندی | این سینتکس از sed گرفته شده‌است که sed هم آن را از ویرایشگر ed گرفته‌است که در این ویرایشگر از کاراکتر / برای جستجو استفاده می‌شود.