انطباق الگو از خط دستور
این برنامه به چندین راه میتواند معرفی شود.اولین راه استفاده از Bourne shell برای ایجاد shell script که هر چیزی را انجام میدهد.این کوتاه شده این متد است.
cat grepinawk $
pattern=$1
shift
*$'{ awk '/'$pattern'/ { print FILENAME ":" $0
$
الگو $ در دستور awk توسط گیومه محافظت نمیشود.یک الگو به خودی خود در راه عادی چک میکند تا ببند با تمام خطهای ($0) منطبق است .نام فایل شامل نام فایل جاری است.awk عملگر جداگانهای برای الحاق ندارد.دو رشته مجار با هم متصل میشوند. $0 بدون تغییر ورودی به خطوط اصلی تغییر پیدا میکند .آنها راههای متناوب برای نوشتن این هستند .این shell script دسترسی دارد به محیط به صورت مستقیم از داخل awk.
cat grepinawk $
pattern=$1
shift
*$'{awk '$0 ~ ENVIRON["pattern"] { print FILENAME ":" $0
$
این shell script که برای دورزدن استفاده میشود.یک آرایه در ورژن جدیدتر از یک awk درست بعد از این که کتاب منتشر شد معرفی میشود. subscript of ENVIRON برای احاطه کردن نام یک محیط متغییری میباشد نتیجه آن مقدار متغییر میباشد .و این شبیه تابع getenv در کتابخانههای متنوع استاندارد و POSIX میباشد . shell script محیط متغییری الگو شامل آرگومان اول را درست میکند.سپس آرگومان را می اندازد و Awk الگو را در هر فایلی جستجو میکند.~ چک میکند که عملوند سمت چپ با عملوند سمت راست منطبق باشد!~ به صورت برعکس.توجه کنید که عبارت با قاعده فقط یک رشته است و میتواند به عنوان یک متغییر ذخیره شود .راه دیگر استفاده از انتساب متغییرها ی دستور-خط میباشد در این مورد آرگومان awk میتواند به عنوان انتساب به متغییرها داده شود.
cat grepinawk $
pattern=$1
shift
*$"awk '$0 ~ pattern { print FILENAME ":" $0 }' "pattern=$pattern
$
در انتها نوشته میشود در awk اصل بدون کمک گرفتن از shell یا بدون دانستن زیاد در مورد اجرای awk 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
ARGC = 2
"-"= [ARGV[1
{
{
{ $0 ~ pattern { print FILENAME ":" $0
BEGIN خیلی ضروری برای استخراج آرگومان اول نمیباشد ،ولی اغلب برای جلوگیری از ترجمه شدن به عنوان نام فایل بعد از BEGIN بلوک بسته میشودARGC شماره آرگومانه میباشد که اغلب بزرگتر از 1 میباشند.به عنوان مثال ARGV[0] نام دستوری است که اجرا میکند بیشتر اوقات رشته "awk".اغلب توجه کنید که ARGV[ARGC] یک رشته خالی است"".# ابتدای یک توضیح است که تا پایان خط ادامه دارد.توجه کنید به بلوک if awk, قبل از این که اجرا کند دستور را چک میکند که ببیند از ورودی استاندارد خوانده شده است.این بدان معنا است که:
'awk 'prog
کارها فقط به خاطر این حقیقت که هیچ نام فایلی وجود نداردقبل از اجرای برنامه چک میشود.اگر شما به طور واضح تنظیم کنیدARGC به 1 بنابراین هیچ آرگومانی وجود ندارد.awkبه طور ساده و مختصر خواهد شد به خاطر اینکه فکر میکند هیچ نام فایلی ورودی دیگری وجود ندارد.بنابراین شما نیاز دارید که به طور واضح بگویید با یک نام فایل ویژه از یک ورودی استاندارد می خوانید